набор запросов передает null в django

#django

#django

Вопрос:

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

 class ItemDetailView(DetailView):
    model = Item
    template_name = "product.html"
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        related_items = Item.objects.filter(category=Item.category).order_by('category')
        context['related_items'] = related_items
        print(related_items)
        return context
  

но это не работает, он печатает:

 <QuerySet []>
  

может кто-нибудь, пожалуйста, скажите мне, что я делаю не так.

Ответ №1:

Вы должны решить, какую категорию вы ищете. Например:

 related_items = Item.objects.filter(category_id=1).order_by('category')
  

или

 category = Category.objects.first()
related_items = Item.objects.filter(category=category).order_by('category')
  

Поэтому он должен быть объектом типа категории или связан с идентификаторами категорий. Один из обычных способов отображения связанных элементов выглядит так:

 def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        related_items = Item.objects.filter(category=self.get_object().category).order_by('category')
        context['related_items'] = related_items
        print(related_items)
        return contex
  

И если вы хотите исключить текущий элемент из связанных элементов, вы можете сделать что-то вроде:

 def get_context_data(self, **kwargs):
        item = self.get_object()
        context = super().get_context_data(**kwargs)
        related_items = Item.objects.filter(category=item.category).exclude(id=item.id).order_by('category')
        context['related_items'] = related_items
        print(related_items)
        return contex