Вывод товаров по категориям в django
Есть две модели: категории товаров и товары. Каждая модель находится в отдельном приложении django. Цель: сделать вывод на странице заголовка категории и под ним перечень товаров данной категории. По неизвестной причине вывод товаров не осуществляется, страница загружается без каких-либо ошибок.
category.models.py:
from django.db import models
from django.urls import reverse
class Category(models.Model):
title = models.CharField(max_length=60, unique=True, blank=True, default='')
class Meta:
ordering = ['title']
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('category_view', args=[str(self.id)])
product.models.py:
from django.db import models
from django.urls import reverse
class Product(models.Model):
title = models.CharField(max_length=60, blank=True, default='')
category = models.ForeignKey('category.Category', related_name='product', on_delete=models.PROTECT)
image = models.ImageField(blank=True)
description = models.TextField(blank=True)
class Meta:
ordering = ['title']
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('product_view', args=[str(self.id)])
product.views.py:
class ProductListView(generic.ListView):
model = Product
template_name = 'product/products.html'
def get_context_data(self):
context = super().get_context_data()
context['categories'] = Category.objects.all()
return context
product.urls.py:
path('products/', views.ProductListView.as_view(), name='product_list'),
product/products.html :
<h3>Товары</h3>
{% if categories %}
{% for category in categories %}
<h3>{{ category.title }}</h3>
{% for el in category.product_list_set.all %}
{{ el.title }}
{% endfor %}
{% endfor %}
{% endif %}
В результате загружается страница, где отображаются заголовки категорий, но не отображаются товары.
Мне удалось найти следующее решение: Вывод товаров всех товаров, принадлежащих категории, на странице самой категории.
views.py :
class CategoryDetailView(generic.DetailView):
model = Category
template_name = 'category/category_detail.html'
def get_context_data(self, **kwargs):
context = super().get_context_data()
context['products'] = Product.objects.filter(category=self.object.id)
return context
category/category_detail.html :
{% block content %}
<h3>{{ category.title }}</h3>
{% if products %}
{% for product in products %}
{{ product.title }}
{% endfor %}
{% endif %}
{% endblock %}
Но, к сожалению, так и не знаю как реализовать фильтрацию в шаблоне аналогичную Product.objects.filter(category=<category_forein_key>)