Как сделать отдельный раздел комментариев для каждого элемента

Я делаю django приложение У меня есть проблема У меня нет идеи, как сделать отдельный раздел комментариев для каждого элемента. Я не хочу иметь одинаковые комментарии для каждого элемента на странице.

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

Для DetailView можно получить соответствующие комментарии с помощью:

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='')
Вернуться на верх