У меня есть основы приложения для блогов (я следую учебному пособию Кори Шафера, часть 10, если это важно), и я пытаюсь опубликовать и отобразить комментарии к сообщению, написанному другими пользователями, которые относятся только к этому сообщению , Аналогично разделу комментариев на Facebook или YouTube.
В настоящее время я отображаю все комментарии в базе данных для каждого сообщения, потому что я не знаю, как отфильтровать результаты, чтобы показывать только комментарии для указанных c пост, и я также не знаю, как публиковать комментарии к конкретному c посту, вот где я получаю сообщение об ошибке.
Мой код указан ниже:
Models.py
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
user = models.ForeignKey(User, on_delete=models.CASCADE)
date_posted = models.DateTimeField(default=timezone.now)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('core:post-detail', kwargs={'pk': self.pk})
class Comment(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.user.username
Views.py
class PostDetailView(DetailView):
model = Post
context_object_name = 'posts'
def get_context_data(self, **kwargs):
context = super(PostDetailView, self).get_context_data(**kwargs)
context['comment'] = Comment.objects.all()
return context
class CommentCreateView(LoginRequiredMixin, CreateView):
model = Comment
fields = ['content']
def form_valid(self, form):
form.instance.user = self.request.user
return super().form_valid(form)
urls.py (Это URL-адреса. py-файл в моем основном приложении, где я вызываю представления блогов)
path('posts/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
path('posts/<int:pk>/comment', CommentCreateView.as_view(), name='comment-create'),
У меня есть эта форма в файле с именем comment_form. html, к которому я могу подключиться когда я попадаю на http://127.0.0.1: 8000 / posts / 5 / comment , но когда я нажимаю на кнопку reply, я получаю IntegrityError в / posts / 5 / comment Не выполнено ограничение NOT NULL: posts_comment.post_id
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4"> Reply to Post </legend>
{{ form|crispy}}
</fieldset>
<div class="form-group">.
<button type="submit" class="btn btn-success">Reply</button>
</div>
</form>
Если бы кто-то мог бросить на него взгляд и дать мне знать, если вы найдете что-нибудь, что я мог бы сделать, чтобы заставить его работать, я был бы очень признателен. Дайте мне знать, если вам нужна дополнительная информация / код.
Спасибо