Django - 当孩子的父母拥有其外键时,获取模特的孩子

时间:2014-04-04 23:36:33

标签: django foreign-key-relationship django-queryset

我有一个小问题,我知道这一定很容易......但是,我似乎无法找到最佳方法,最好是在我看来的一个查询中。

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>
....

有人能指出我正确的方向吗?任何帮助表示赞赏。提前谢谢。

2 个答案:

答案 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)

这为我提供了所需的一切,而无需再次为每个类别查询数据库。