Товары из дерева категорий Django-mptt
Подскажите как вывести товары категории используя модель Django-Mptt При вызове category.product_set.all() получаю ошибку AttributeError at /category/cross/ 'Category' object has no attribute 'product_set'.
models.py
class Category(MPTTModel):
class Meta:
verbose_name = 'Категории'
verbose_name_plural = 'Категории'
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True,on_delete=models.CASCADE)
name = models.CharField(max_length=250,verbose_name='Имя категории')
slug = models.SlugField(unique=True)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('category_detail',kwargs={'slug': self.slug})
class Product(models.Model):
class Meta:
verbose_name = 'Продукт'
verbose_name_plural = 'Продукты'
order_with_respect_to='slug'
category = TreeForeignKey(Category, blank=True, null=True, related_name='category', verbose_name="Выберите категорию",on_delete=models.CASCADE)
title = models.CharField(max_length=250,verbose_name='Наименоватние продукта')
slug=models.SlugField(unique=True)
image = models.ImageField(verbose_name='Главное изображение',upload_to='photos/%Y/%m/%d/')
***features*** = models.ManyToManyField("specs.ProductFeatures", blank=True, related_name='features_for_product')
available = models.BooleanField(default=True)
description = models.TextField(verbose_name='Описание товара',null=True)
price = models.DecimalField(max_digits=10,decimal_places=2,verbose_name='Цена')
views.py
class CategoryDetailView(CartMixin, DetailView):
model = Category
queryset = Category.objects.all()
context_object_name = 'category'
template_name = 'category_detail.html'
slug_url_kwarg = 'slug'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
query = self.request.GET.get('search')
category = self.get_object()
context['cart'] = self.cart
context['categories'] = self.model.objects.all()
if not query and not self.request.GET:
context['category_products'] = category.product_set.all()
return context
if query:
products = category.product_set.filter(Q(title__icontains=query))
context['category_products'] = products
return context