2012-02-20 105 views
1

鑑於現有的Django模型:Django:如何創建一個包含其他模型的所有字段的新模型(但與其無關)?

class MyModel(models.Model): 
    field1 = ... 
    field2 = ... 
    ... 
    fieldN = ... 

我想建立一個完全獨立的模型,看起來像這樣:

class MyModel2(models.Model): 
    field1 = ... 
    field2 = ... 
    ... 
    fieldN = ... 

    fieldA = ... 
    fieldB = ... 
    ... 
    fieldZ = ... 

多表繼承不爲我工作,我想MyModel2到由包含其所有字段的數據庫表支持,而不僅僅是額外的字段以及指向MyModel表的鏈接。

如果我可以更改MyModel的定義,則定義抽象基類可能會有效。但有沒有另一種方法,可能使用Python的元類?

+0

我會使用抽象基類。對於這個元素魔法太聰明瞭。 – Alasdair 2012-02-20 11:41:37

+0

https://docs.djangoproject.com/en/1.3/topics/db/models/#abstract-base-classes檢查此 – Nilesh 2012-02-20 12:03:51

回答

1

爲什麼不爲這兩個抽象基類,而你的一個具體類沒有更多的字段?

+0

因爲一般情況下我可能無法更改MyModel的定義。所以基本上我正在尋找一個函數,給定原始不變的MyModel,返回MyModel2。 – jl6 2012-02-20 11:55:24

+0

@ jl6:我建議你閱讀關於Django模型,然後與他們一起玩,並嘗試實現,然後回來你有任何具體的問題。檢查模型的_meta屬性 - 這裏有很多東西。 – Marcin 2012-02-20 12:00:39

相關問題