我有一个小问题,我知道这一定很容易......但是,我似乎无法找到最佳方法,最好是在我看来的一个查询中。
class Category(models.Model):
...
class SubCategory(models.Model):
category = models.ForeignKey(Category)
...
我能够在一个查询中获取子类别和类别,但这并不是我真正需要的:
...
subcategories = SubCategory.objects.select_related('category')
subcategories = subcategories.filter(is_active=True)
我真正需要的是反过来所以我得到所有类别及其相关的子类别,但我不知道如何做到这一点,因为Category对象没有对Subcategory的外键引用作为多对多...出于某种原因,它就是这样设置的。 (注意:这是以这种方式设置的,因为我在类别管理员上内联我的子类别,所以我可以在类别添加/编辑时添加子类别,并可以按我的首选顺序拖放子类别。)
我想要这样的东西,只需要sudo输出结构:
<Category object>
<SubCategory object>
<SubCategory object>
<SubCategory object>
<Category object>
<SubCategory object>
<SubCategory object>
<SubCategory object>
<Category object>
<SubCategory object>
<SubCategory object>
<SubCategory object>
....
有人能指出我正确的方向吗?任何帮助表示赞赏。提前谢谢。
答案 0 :(得分:2)
这就是你需要的吗?
category = Category.objects.get(pk=primary_key)
subcategories = category.subcategory_set.all()
答案 1 :(得分:0)
这就是我真正追求的。看到你的帖子 AFTER 我想出来了......但非常感谢你的帮助!
categories = Category.objects.prefetch_related('subcategory_set')
categories = categories.filter(is_active=True)
这为我提供了所需的一切,而无需再次为每个类别查询数据库。