5

我正在使用django-model-utils继承管理器来查询具有多表继承的数据模型,它大多工作得很好!当我想.select_subclasses()过滤特定子类时,效果不佳的地方。例如:

class Salad:
    ...

class Vegetable:
    salad = models.ForeignKey(Salad)
    ...

class Cucumber(Vegetable):
    ...

class Carrot(Vegetable):
    ...

我希望能够只获取Cucumber与特定对象相关的所有对象,Salad而无需任何Carrot对象。不幸的是,文档似乎没有解释这一点。我最好的选择是在保存任何可用于“常规”过滤的蔬菜对象时在我设置type的类上创建一个字段?Vegetable提前致谢!

4

2 回答 2

9

如果您只想过滤Cucumber对象,您可以执行以下操作:

Vegetable.objects.exclude(cucumber__isnull=True)
于 2016-02-27T13:12:07.013 回答
0

您可以使用.select_subclasses(Cucumber)which 将Cucumber对象返回,其余作为Vegetable对象返回。您可以稍后使用isinstance

于 2016-02-26T07:53:28.207 回答