Я пытаюсь создать страницу комментариев для сайта в стиле блога, на котором будут перечислены все предыдущие комментарии для одного связанного сообщения.
Мне сложно понять, как структурировать представление, чтобы получить то, что я ищу. Я пытался использовать связанные имена для получения данных, но не уверен, что это правильный метод.
Вот мои модели:
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
title = models.CharField(max_length=128)
content = models.TextField()
image = models.ImageField(upload_to='post_pics', blank=True)
date_posted = models.DateTimeField(default=timezone.now)
def get_absolute_url(self):
return reverse('home')
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
user = models.ForeignKey(User, on_delete=models.CASCADE)
comment = models.TextField()
date_created = models.DateTimeField(default=timezone.now)
def get_absolute_url(self):
return reverse('home')
И вот мое мнение:
class CommentCreateView(LoginRequiredMixin, CreateView):
model = Comment
template_name = 'home/comment-form.html'
fields = ['comment',]
def get_context_data(self, **kwargs):
context = super(CommentCreateView, self).get_context_data(**kwargs)
context['post'] = Post.objects.get(pk=self.kwargs['pk'])
comments = Post.comments.all()
context['comments'] = comments
return context
def form_valid(self, form):
form.instance.user = self.request.user
form.instance.post = Post.objects.get(pk=self.kwargs['pk'])
return super().form_valid(form)
Пробовал кучу разных вещей. Вышесказанное - моя последняя попытка. Когда я пытаюсь запустить это, я получаю ошибку 'ReverseManyToOneDescriptor' object has no attribute 'all'
.
Я не знаю, нужно ли мне запускать функцию get_queryset()
или, может быть, вызывать queryset
в начале представления?
Знайте, что это, вероятно, очень серьезная c проблема, но я ценю помощь!