我怎么知道模型的实例是由子模型的实例创建的?

时间:2010-10-15 16:45:03

标签: django inheritance

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

如果是,

parent.child

返回子项,但否则返回DoesNotExist异常。

尝试/除了检查它的唯一方法吗?

由于

#编辑

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

答案是......

hasattr(parent, 'child')

3 个答案:

答案 0 :(得分:0)

  

尝试/除了检查它的唯一方法吗?

或多或少。

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

答案 1 :(得分:0)

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

答案是......

hasattr(parent, 'child')

答案 2 :(得分:-2)

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