如何解决如何动态创建子Django模型
我想创建73个不同的django模型,这些模型将非常相似,因此从理论上讲,我将从基本模型类继承,而只是更改Model /表的名称。
我知道这不是最好的数据库结构,但是我相信这种非常规的结构可能会改善我的应用程序的其他方面。最初的目的是检验这个假设。
django如何创建模型,而无需定义所有73个模型?
class BaseModel(models.Model):
some_field = models.CharField(max_length=255)
some_other_field = models.CharField(max_length=255)
class Model_NR_01(BaseModel):
pass
...
class Model_NR_73(BaseModel):
pass
此外,在上面的示例中,我相信还将创建BaseModel。在迁移结束时仅提及上述73个模型,我该如何防止? (当然,如果可能的话)。
PS .:我确实搜索了几个类似的问题,找不到真正的答案,只是警告它的设计多么糟糕。我知道。
解决方法
type
的三个参数形式可用于动态创建类。您只需在属性字典中传递的唯一内容就是__module__
,因为使用type
这样创建类的方法不会自动填充Django所需的该属性
class BaseModel(models.Model):
some_field = models.CharField(max_length=255)
some_other_field = models.CharField(max_length=255)
class Meta:
abstract = True
for i in range(1,74):
model_name = f'Model_NR_{i:02}'
globals()[model_name] = type(model_name,(BaseModel,),{'__module__': BaseModel.__module__})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。