2012-06-04 62 views
0

我有一個基本模型和一個從它繼承,在設置與此類似選擇的基類:如何從Django的子對象(使用模型繼承)

class Archive(models.Model): 
    pub_date = models.DateField() 


class ArchiveB(Archive): 
    another_date = models.DateField() 

如何訪問子類中的基類?例如:

archiveb_instance = ArchiveB.objects.get(pk=5) 
base_instance = archiveb_instance.archive #This doesn't work. 

根據文檔,它只是一個一對一的關係自動創建的孩子,所以我想它會讓我倒退。我想要這樣做的原因是因爲我有第三個非存檔模型,該模型具有存檔的外鍵。我希望外鍵歸檔,因爲這樣第三個模型可以與任何歸檔關聯,而不僅僅是特定的歸檔類型。

回答

1

我想你可能會尋找archiveb_instance.archive_ptr

0

他們共享相同的PK,所以只需將其分配給附加_id的字段。

+0

以上回答對我來說是正確的解決方案。需要注意的是,我不認爲它們必須共享相同的PK(即,如果我創建了一些不包含ArchiveB記錄的歸檔記錄,然後創建一堆ArchiveB記錄)。在這種情況下,兩個表的PK不匹配。 – rsp

+0

是的,他們會的。基地的PK是兒童中的「OneToOneField」包含的內容。 –