我試圖在數據庫中保存一種內容表結構。簡單的例子:Django - 檢查多表繼承查詢集的類型
models.py
class Section (models.Model):
title = models.CharField(max_length=80)
order = models.IntegerField()
class SectionClickable(Section):
link = models.CharField(max_length=80)
class SectionHeading(Section):
background_color = models.CharField(max_length=6)
views.py
sections = Section.objects.filter(title="Hello!")
for section in sections:
if(section.sectionheading):
logger.debug("It's a heading")
我需要做一些處理操作,如果它是一個SectionHeading
實例,但(如Django的手冊),訪問如果對象不是類型SectionHeading,則section.sectionheading
將引發DoesNotExist錯誤。
我一直在尋找這類問題的替代品,並且我正在瀏覽contenttypes包中的通用外鍵。但是,這似乎會在Django Admin方面造成更多麻煩。任何人都可以提供比上述更好的解決方案嗎?
編輯:由於order
字段,我避免了抽象繼承。我將不得不在兩個查詢集連接在一起,並通過訂單
你怎麼關聯'Section's和'SectionHeading's? – second
SectionHeading是Section – bcoughlan
的子類啊,道歉,沒注意 – second