过滤继承的对象

时间:2010-01-17 13:08:34

标签: django django-models

我有一个基类A.两个派生类B,C。 现在我有一个全局类女巫包含与对象A的多对多关系。

Class D:
    aObjects : ManyToMany("A")

如何才能知道对象D中过滤器查询返回的真实对象 我的意思是:d.objects.get(id=5) 现在d有n个A类对象,但它们是A,B或C的混合体。 如何在查询中只获取B类型的那些。

提前致谢。

2 个答案:

答案 0 :(得分:0)

这会对你有用吗<​​/ p>

filter(lambda x: isinstance(x, B), d.objects.get(id=5))

答案 1 :(得分:0)

没有办法自动执行此操作。文档很清楚,没有办法告诉基类的实例它是否“实际上”是派生类的实例。

唯一要做的是在基类上定义一个字段,该字段显示它的派生类型,并在各种派生类的save()方法中自动设置。然后你可以过滤这个字段的值。