前提・実現したいこと
ブログにコメント投稿をできるようにしたい。
コメント登録機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
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
あなたの回答
tips
プレビュー