#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