获得给定模型的所有“盛大” - 儿童

时间:2013-05-14 19:12:06

标签: python django django-models

我正在尝试学习python / django,并遇到了以下问题。 假设我有3个型号:

Model Category(models.Model)
    name = models.Charfield(max_length64)

Model Subcategory(models.Model)
    category    = models.ForeignKey(Category)
    name        = models.Charfield(max_length64)

Model Animal(models.Model)
    subcategory = models.ForeignKey(Subcategory)
    name = models.Charfield(max_length64)

现在,例如,如果有人搜索某个类别,我想拥有给定主类别的任何子类别中的所有动物。 (希望它不要太复杂)

所以现在我的问题是最有效的方法是什么?

提前致谢!

2 个答案:

答案 0 :(得分:2)

您可以执行以下查询:

animals = Animal.objects.filter(subcategory__category__id=category_id)

或者,如果您有权访问类别对象,

animals = Animal.objects.filter(subcategory__category=category)

请注意,模型对象定义为class <ClassName>而不是Model <ClassName> 例: Model Animal应为class Animal

答案 1 :(得分:1)

我使用以下查询集执行此操作:

animals = Animal.objects.filter(subcategory__category=category)