我試圖創建一個Django ORM映射,它與現有的data model兼容,所以我嘗試使用現有的一組表和列名。Django多表繼承:指定自定義的一對一列名
我有一個多表繼承情況,其中一個類的信息對象派生自類對象。我想,讓Django的這個處理的常用方法:
class Object(models.Model):
class Meta:
db_table = "object"
class InformationObject(Object):
class Meta:
db_table = "information_object"
在這種情況下的Django將在名爲object_ptr_id的繼承模型自動創建一個對一個字段。但是,在我被限制使用的模式中,對Object的引用簡稱爲「id」。所以:
有沒有辦法以某種方式指定列的名稱Django自動奇蹟般用於多表繼承?
另一種選擇,我將不得不以其他方式使用,是使用一個明確的一到一個領域,但後來我將不能夠從對象模型繼承非數據庫的方法:
class Object(models.Model):
class Meta:
db_table = "object"
class InformationObject(models.Model):
class Meta:
db_table = "information_object"
id = models.OneToOneField(Object, primary_key=True, db_column="id")
任何想法?也許我可以爲它們創建一個通用的基類,並將非db方法放在那裏......?
你最後的想法是非常穩固:創造對他們倆的公共基類,並把它作爲一個mixin提供你正在尋找額外的功能。我建議將它作爲一個實驗來嘗試。 (它可能行不通; Django的數據庫層在Python的元類中做了一些相當不錯的事情,但值得一試。) –