質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Q&A

0回答

499閲覧

【django】コメント投稿フォームに外部キーが登録できない。

Kantan.lab

総合スコア22

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

0グッド

0クリップ

投稿2020/10/03 11:28

前提・実現したいこと

ブログにコメント投稿をできるようにしたい。

コメント登録機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

null value in column "blog_id" violates not-null constraint DETAIL: Failing row contains (34, fdasfa, dfasda, 2020-10-03 11:23:05.932324+00, t, null).

該当のソースコード

views.py

views.py

1def detail(request,pk): 2 blog = Blog.objects.get(pk=pk) 3 comments = Comment.objects.filter(blog=blog) 4 form = CommentForm(request.POST) 5 6 if request.method == 'POST': 7 if form.is_valid(): 8 comments = form.save() 9 comments.blog = blog 10 comments.save 11 else: 12 form = CommentForm() 13 return render(request, 'blog/detail.html', { 14 'blog': blog, 15 'form': form, 16 'comment': comments 17 }) 18

models.py

models.py

1 2class Blog( models.Model): 3 title = models.CharField( max_length=15, blank=False, null=False ) 4 sub_title = models.CharField( max_length=20, blank=False, null=False ) 5 body = models.TextField( max_length=500, blank=False, null=False ) 6 bigimg = models.ImageField( upload_to='media/', blank=False, null=False ) 7 created_at = models.DateTimeField( auto_now_add=True ) 8 updated_at = models.DateTimeField( auto_now=True ) 9 10 big = ImageSpecField( 11 source='bigimg', # 対象フィールド 12 processors=[ResizeToFill( 1280, 1024 )], # 画像サイズ 13 format='JPEG' # フォーマット 14 ) 15 16 thumbnail = ImageSpecField( 17 source='bigimg', 18 processors=[ResizeToFill( 350, 270 )], 19 format='JPEG', 20 options={'quality': 60} # クオリティ 21 ) 22 23 middle = ImageSpecField( 24 source='bigimg', 25 processors=[ResizeToFill( 600, 400 )], 26 format='JPEG', 27 options={'quality': 75} 28 ) 29 30 small = ImageSpecField( 31 source='bigimg', 32 processors=[ResizeToFill( 75, 75 )], 33 format='JPEG', 34 options={'quality': 50} 35 ) 36 37 def __str__(self): 38 return self.title 39 40class Comment( models.Model ): 41 """コメント.""" 42 name = models.CharField( max_length=255, blank=True ) 43 text = models.TextField() 44 created_at = models.DateTimeField(auto_now_add=True) 45 blog = models.ForeignKey( Blog, on_delete=models.CASCADE, null=True) 46 is_publick = models.BooleanField( default=True ) 47 48 def __str__(self): 49 return self.name 50

forms

forms.py

1 2class CommentForm( forms.ModelForm ): 3 class Meta: 4 model = Comment 5 fields = ('name', 'text') 6 7

試したこと

forms.pyに外部キー選択項目を追加し保存することはできました。
手動ならできるようですが、外部キーは登録と同時に自動で作成される認識です。
恐れ入りますが、ご教示をお願いいたします。

forms.py

1 2 3class CommentForm( forms.ModelForm ): 4 class Meta: 5 model = Comment 6 fields = ('name', 'text', 'blog') 7

補足情報(FW/ツールのバージョンなど)

django3
DB:sqlite

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問