2010-10-15 115 views
2

我有一個模型從一個(非抽象)模型父類繼承。 對於Parent的給定實例父項,我怎麼知道它是否是Child?如何知道模型的實例是由子模型的實例創建的?

如果是,

parent.child 

返回子,但除此之外,它返回一個DoesNotExist例外。

是一個嘗試/除了唯一的方法來檢查?

感謝

七月

#編輯

我剛剛在這裏找到了同樣的問題: Distinguishing parent model's children with Django inheritance

答案是....

hasattr(parent, 'child') 

回答

-2

你可以使用instanceof(parent, Child)。它將爲子實例返回True,爲父實例返回False。

+0

(這是行不通的:海報的問題是有關的Django模型繼承,而不是Python繼承) – 2010-10-15 17:10:10

+0

我想這是沒有要求。如果'child'是'Child'的一個實例,那麼它也存儲在'Parent'表中,所以問題是(如果我知道了),如何確定從'Parent'表中檢索到的對象是一個孩子... – 2010-10-15 17:11:47

0

是一個嘗試/除了唯一的方法來檢查?

或多或少。

如果你只想要一個存在性檢查,你可以這樣Child.objects.filter(parent=parent).exists()避免異常,但如果你想要做的事與孩子如果存在的話,最好是乾脆直接訪問和處理DoesNotExist

相關問題