我正在尝试学习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)
现在,例如,如果有人搜索某个类别,我想拥有给定主类别的任何子类别中的所有动物。 (希望它不要太复杂)
所以现在我的问题是最有效的方法是什么?
提前致谢!
答案 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)