【问题标题】:Filtering inherited objects过滤继承的对象
【发布时间】:2010-01-17 13:08:34
【问题描述】:

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

Class D:
    aObjects : ManyToMany("A")

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

提前致谢。

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    无法自动执行此操作。文档很清楚,没有办法从基类的实例中判断它是否应该“实际上”是派生类的实例。

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

    【讨论】:

      【解决方案2】:

      这对你有用吗

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

      【讨论】:

        猜你喜欢
        • 2022-01-21
        • 1970-01-01
        • 2016-12-13
        • 2014-02-12
        • 1970-01-01
        • 2012-01-05
        • 2011-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多