【问题标题】:How to make seperate comment section for each item如何为每个项目制作单独的评论部分
【发布时间】:2021-08-26 17:53:18
【问题描述】:

我正在制作 django 应用程序我有一个问题,我不知道如何为每个项目制作单独的评论部分。我不希望页面上的每个项目都有相同的 cmets。

models.py

class Comment(models.Model):
    comment_user = models.OneToOneField(User, on_delete=CASCADE)
    item = models.OneToOneField(Item, on_delete=CASCADE)
    content = models.TextField(default='')

views.py

class ShopDetailView(DetailView):
model = Item 
template_name = 'shop/detail.html'
context_object_name = 'item'

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['comments'] = Comment.objects.all()
    return context

【问题讨论】:

  • 这是ListView, DetailView?
  • 这是一个DetailView

标签: python django


【解决方案1】:

对于DetailView,您可以通过以下方式获取相关的cmets:

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['comments'] = Comment.objects.filter(item=self.object)
    return context

然而,在这里使用OneToOneField 并没有多大意义,因为这意味着每个项目只能有最多一个 评论。您可能需要多对一关系,因此使用 ForeignKey [Django-doc]

class Comment(models.Model):
    comment_user = models.OneToOneField(User, on_delete=CASCADE)
    item = models.ForeignKey(Item, on_delete=CASCADE)
    content = models.TextField(default='')

【讨论】:

    猜你喜欢
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2017-07-05
    相关资源
    最近更新 更多