Сохранение комментария Django в БД, но не в посте
Комментарии сохраняются в БД, но не связываются с постом, пока я вручную не перейду на страницу администратора и не свяжу их.
MODELS.PY
class Post(models.Model):
title = models.CharField(max_length=50)
description = models.CharField(max_length=50)
info = models.TextField(max_length=2000)
slug = models.SlugField(null=True, unique=True, max_length=300)
created = models.DateField(null=True, auto_now_add=True)
approved = models.BooleanField(default=False, blank=True)
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
class Comment(models.Model):
post = models.ForeignKey(Post, related_name="comments", on_delete=models.CASCADE, null=True)
name = models.CharField(max_length=50, verbose_name="Name")
comment = models.TextField(max_length=500, verbose_name="Comment")
created = models.DateField(null=True, auto_now_add=True)
approved = models.BooleanField(default=False, blank=True)
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
FORMS.PY
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['name','comment']
VIEWS.PY
def create_comment(request, slug):
form = CommentForm()
post = Post.objects.get(slug=slug)
if request.method == "POST":
form = CommentForm(request.POST)
comment = form.save()
review.post = post
review.save()
messages.success(request, 'Your comment was successfully submitted!')
return render(request, 'post.html', {'post': post, 'form':form})
return render(request, 'post.html', {'post': post, 'form':form})
На странице администратора я могу добавить комментарий и вручную связать его с постом, но из формы на фронтенде комментарий создается и сохраняется в БД, но не связан ни с одним постом. Есть идеи, что я делаю неправильно?
Откуда берется этот экземпляр объекта review
, разве это не объект comment
?
Также проверьте, действительна ли форма:
def create_comment(request, slug):
form = CommentForm()
post = Post.objects.get(slug=slug)
if request.method == "POST":
form = CommentForm(request.POST)
if form.is_valid():
comment = form.save()
comment.post = post
comment.save()
messages.success(request, 'Your comment was successfully submitted!')
return render(request, 'post.html', {'post': post, 'form':form})
return render(request, 'post.html', {'post': post, 'form':form})