У меня есть сайт, где элементы разделены по категориям и подкатегориям. Мои модели выглядят следующим образом:Django многоуровневый обратный поиск
from django.db import models
class Category(models.Model):
name = models.CharField(max_lenght=100)
class Subcategory(models.Model):
name = models.CharField(max_lenght=100)
category = models.ForeignKey('Category')
class Item(models.Model):
name = models.CharField(max_lenght=100)
subcategory = models.ForeignKey('Subcategory')
Мне нужно, чтобы отобразить все элементы одной категории и все подкатегории с элементами в одной и той же странице (это необходимая часть проекта) и списки должны быть в порядке, как это:
Категория:
- Пункт 1
- Пункт 2
- Пункт 3
- Пункт 4
- Пункт 5
- Пункт 6
Подкатегория 1
- Пункт 1
- Пункт 3
- Пункт 4
Подкатегория 2
- Пункт 2
- Пункт 5
- Пункт 6
До сих пор у меня есть два запроса, но Возможное я не могу это сделать.
items = Item.objects.prefetch_related('subcategory', 'subcategory__category').filter(subcategory__category__slug=categorySlug)
Этот запрос дает мне QuerySet и я могу сделать цикл в шаблоне, чтобы показать все элементы, но я не могу заказать их по подкатегориям.
{% for item in items %}
Что мне нужно что-то вроде для подкатегории в items.subcategory.
Следующий запрос является обратным:
category = Category.objects.prefetch_related('subcategoria_set', 'subcategoria_set__item_set').get(slug=categorySlug)
С помощью этого запроса я могу сделать цикл, чтобы показать детали подкатегории
{% for subcategory in category.subcategory_set.all %}
{% for item in subcategory.item_set.all %}
То, что я не могу сделать, это показать все товары по категориям. Мне нужно что-то вроде для пункта в category.subcategory_set__item_set.all или для пункта в category.subcategory_set.all.item_set.all
Я знаю, что я могу сделать это с помощью нескольких querys (на самом деле, используя два запросов в то же время), но я пытаюсь использовать один запрос для выполнения этой задачи. Это возможно?