我有一个网站,其中的项目按类别和子类别进行分类。我的模型看起来像这样:
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
到目前为止,我有两个有问题的查询,但我无法完成此任务。
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 %}
我不能做的是按类别按顺序显示所有项目。我需要类似 for category.subcategory_set__item_set.all 中的项目或中的item.subcategory_set.all.item_set.all
中的项目我知道我可以使用多个查询(事实上同时使用两个查询)来完成它,但我正在尝试使用单个查询来完成这项工作。它可以吗?
答案 0 :(得分:0)
您只需获取子类别列表并使用regroup
update Books_out_on_loan
set amount_of_fine = amount_of_fine + 1.5
where date_returned is null
你能用一个查询做到吗?不是真的,因为你需要一个迭代所有子类别,然后另一个来分类,以产生列表的第一部分