0
コメントフォームをユーザーがそれぞれのブログに投稿しようとしています。私はそれを行うときにエラー "NOT NULL制約が失敗しました:blog_comment.posts_id"を取得しています。django - NOT NULL制約に失敗しました:blog_comment.posts_id
views.py
def add_comment(request, slug):
post = get_object_or_404(Post, slug=slug)
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.post = post
comment.save()
return redirect('blog:post_detail', slug=post.slug)
else:
form = CommentForm()
template = "blog/post/add_comment.html"
context = {'form': form}
return render(request, template, context)
forms.py
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('user', 'email', 'title', 'body',)
models.py私のコードが間違っている何
class Post(models.Model):
STATUS_CHOISES = (
('draft', 'Draft'),
('published', 'Published'),
)
category = models.ForeignKey(Category)
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250, unique=True)
content = models.TextField()
seo_title = models.CharField(max_length=250)
seo_description = models.CharField(max_length=160)
author = models.ForeignKey(User, related_name='blog_posts', default=settings.AUTH_USER_MODEL)
published = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=9, choices=STATUS_CHOISES, default='draft')
def get_absolute_url(self):
return reverse('blog:post_detail', args=[self.slug])
def __str__(self):
return self.title
class Comment(models.Model):
posts = models.ForeignKey(Post, related_name="comments")
user = models.CharField(max_length=250)
email = models.EmailField()
title = models.CharField(max_length=250)
body = models.TextField()
created = models.DateTimeField(auto_now_add=True)
approved = models.BooleanField(default=False)
def approved(self):
self.approved = True
self.save()
def __str__(self):
return self.title
?私が理解私は私のフォームにポストフィールドを与え、それを手動で選択した場合、それが動作するので、どこかで/何とかコメントは、右のブログの記事に送信されていないから
。しかし、理想的には、私はそれが自動的に対応するブログに送信されたいと思います。それはちょうどpost
としてあなたのForeignKeyや名前、名前を変更する方が理にかなって
if form.is_valid():
comment = form.save(commit=False)
comment.posts = post
comment.save()
:
あなたなら右、私は(私はチュートリアルの次てる物事をテストし、彼らは正確に何を参照するには、物事の名前を変更して、私は何が起こっているのか理解しようとするために一時停止しています私はあなたの助けなしにそれに気付かなかったでしょう!本当にありがとう!!それは今働く:D – dmandres