我有一個網站,其中的項目按類別和子類別分類。我的模型是這樣的: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循環在我的模板來顯示所有的項目,但我不能按子類別排序。
{% 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(其實它做同時查詢),但我試圖用單個查詢來完成這項工作。它是否可行?