Как отобразить комментарии, использующие внешний ключ другой модели, в представлениях Django, основанных на классах?

Я хотел бы вывести список комментариев на странице Post Detail и хотел бы узнать, как я могу подключить представление к конкретным комментариям для данного поста?

Models.py

class Post(models.Model):
    owner = models.ForeignKey(
        Profile, null=True, blank=True, on_delete=models.SET_NULL)
    title = models.CharField(max_length=200)
    body = models.TextField()
    Post_image = models.ImageField(
        null=True, blank=True, default='default.jpeg')
    create_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post', kwargs={'pk': self.pk})

    class Meta:
        ordering = ['-create_date']



class Comment(models.Model):
    owner = models.ForeignKey(Profile, on_delete=models.CASCADE, null=True)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    text = models.TextField()
    create_date = models.DateTimeField(auto_now_add=True)
    

Views.py

class PostDetailView(DetailView):
    model = Post

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['comment_list'] = Post.comment_set.all()
        return context

Вы можете получить доступ к объекту детализации DetailView с помощью self.object:

class PostDetailView(DetailView):
    model = Post

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['comment_list'] = self.object.comment_set.order_by('create_date')
        return context
Вернуться на верх