Django:如何创建一个包含其他模型的所有字段的新模型(但与其无关)?

问题描述:

鉴于现有的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

为什么不为这两个抽象基类,而你的一个具体类没有更多的字段?

+0

因为一般情况下我可能无法更改MyModel的定义。所以基本上我正在寻找一个函数,给定原始不变的MyModel,返回MyModel2。 – jl6 2012-02-20 11:55:24

+0

@ jl6:我建议你阅读关于Django模型,然后与他们一起玩,并尝试实现,然后回来你有任何具体的问题。检查模型的_meta属性 - 这里有很多东西。 – Marcin 2012-02-20 12:00:39