Django:如何创建一个包含另一个模型的所有字段(但与它无关)的新模型?
Posted
技术标签:
【中文标题】Django:如何创建一个包含另一个模型的所有字段(但与它无关)的新模型?【英文标题】:Django: How do I create a new model containing all the fields of another model (but unrelated to it)? 【发布时间】:2012-03-10 17:48:44 【问题描述】:给定一个现有的 Django 模型:
class MyModel(models.Model):
field1 = ...
field2 = ...
...
fieldN = ...
我想创建一个完全独立的模型,如下所示:
class MyModel2(models.Model):
field1 = ...
field2 = ...
...
fieldN = ...
fieldA = ...
fieldB = ...
...
fieldZ = ...
多表继承对我不起作用,因为我希望 MyModel2 由包含其所有字段的数据库表支持,而不仅仅是额外的字段以及指向 MyModel 表的链接。
如果我可以更改 MyModel 的定义,那么定义抽象基类可能会起作用。但是还有其他方法吗,可能使用 Python type
元类?
【问题讨论】:
我会使用抽象基类。元类魔法太聪明了。 docs.djangoproject.com/en/1.3/topics/db/models/… 看看这个 【参考方案1】:为什么不是两者的抽象基类,而您的具体类之一没有其他字段?
【讨论】:
因为一般情况下我可能无法更改 MyModel 的定义。所以本质上我正在寻找一个函数,给定原始未更改的 MyModel,返回 MyModel2。 @jl6:我建议您阅读有关 Django 模型的信息,然后尝试使用它们,并尝试实现它,然后再提出您的任何具体问题。检查模型的_meta
属性 - 里面有很多东西。以上是关于Django:如何创建一个包含另一个模型的所有字段(但与它无关)的新模型?的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 django 过滤器为给定模型中的所有字段创建一般搜索
如何在具有 Jsonfield 的模型中发布 django rest 中的数据