【问题标题】:How can I know that an instance of a model was created by an instance of a child model?我怎么知道模型的实例是由子模型的实例创建的?
【发布时间】:2011-04-26 01:13:34
【问题描述】:

我有一个继承自(非抽象)模型父模型的子模型。 对于 Parent 的给定实例 parent,我如何知道它是否是 Child?

如果是的话,

parent.child

返回子元素,否则返回 DoesNotExist 异常。

try/except 是唯一的检查方法吗?

谢谢

七月

# 编辑

我刚刚在这里找到了同样的问题: Distinguishing parent model's children with Django inheritance.

答案是……

hasattr(parent, 'child')

【问题讨论】:

    标签: django inheritance


    【解决方案1】:

    我刚刚在这里找到了同样的问题: Distinguishing parent model's children with Django inheritance.

    答案是……

    hasattr(parent, 'child')
    

    【讨论】:

      【解决方案2】:

      try/except 是唯一的检查方法吗?

      或多或少。

      如果你只想要一个存在检查,你可以通过说Child.objects.filter(parent=parent).exists()来避免异常,但是如果你想对存在的孩子做一些事情,最好直接访问它并处理DoesNotExist

      【讨论】:

        【解决方案3】:

        您可以使用instanceof(parent, Child)。它将为子实例返回 True,为父实例返回 False。

        【讨论】:

        • (这行不通:发帖人的问题是关于 Django 模型继承,而不是 Python 继承。)
        • 我猜这不是要求的。如果childChild 的一个实例,那么它也存储在Parent 表中,所以问题是(如果我猜对了),如何确定从Parent 表中检索到的对象是否为一个孩子……
        猜你喜欢
        • 1970-01-01
        • 2022-11-21
        • 1970-01-01
        • 2011-05-03
        • 2013-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        相关资源
        最近更新 更多