Как получить доступ к дочерним элементам модели в наборе запросов django

У меня есть модель для продуктов и модель для категорий: Каждый продукт может иметь несколько категорий, а каждая категория может иметь несколько подкатегорий. например:

категории:

-Digital devices:
    -laptop
    -smartphone
    -PC

продукты:

Mylaptop1
    -category=laptop
Myphone2
    -category=smartphone

Я хочу фильтровать товары по родительской категории, например, когда пользователь заходит по адресу: mysite.com/products/digital-devices, я хочу показать Mylaptop1 и Myphone2. У меня нет проблем с фильтрацией подкатегорий, но как я могу фильтровать по родительской категории в наборе запросов.

models.py:

class Category(models.Model):

    name=models.CharField(max_length=200, db_index=True),
    slug=models.SlugField(max_length=200, unique=True, allow_unicode=True)
    parent = models.ForeignKey('self', default=None, null=True, blank=True, 
                                  on_delete=models.SET_NULL,related_name="children")

class Product(models.Model):

    name=models.CharField(max_length=200, db_index=True),
    slug=models.SlugField(max_length=200, db_index=True, allow_unicode=True),
    description=models.TextField(blank=True),  
    category = models.ManyToManyField(Category, related_name='products')

views.py

def product_list(request, category_slug=None):
category = None
categories = Category.objects.all()
products = Product.objects.filter(available=True)
photos = ProductImage.objects.all()

if category_slug:
    category = get_object_or_404(Category,slug=category_slug)

    products = products.filter(category=category) # query for sub categories
    products = products.filter(category__in=[category.children.all]) # i tried to use this query set to get products using parent category but it does not work

Как я могу получить доступ к товарам, которые имеют дочерние категории, используя родительскую категорию

Вы можете фильтровать подкатегории через поле parent

parent_category = Category.objects.get(slug='DigitalDevices')    
products = products.filter(
    category__in=Category.objects.filter(parent=parent_category)
) 
Вернуться на верх