有没有办法动态添加 django 模型?

时间:2021-06-29 06:05:59

标签: mysql django django-models

我正在使用字符串数组在 Django 中创建模型。 例如。让有一个名为 arr 的字符串数组 arr = ['one','two','three','four'] 然后我必须在 Django 中创建四个模型,分别命名为 FooOne、FooTwo、FooThree、FooFour。它们都具有相同的字段。有什么方法可以让我不必手动创建这些模型,即,我只需更新字符串数组并运行脚本,就会自动为我创建模型?我使用 MySQL 作为数据库。

1 个答案:

答案 0 :(得分:1)

您可以使用 type 的 3 参数形式动态创建类,如果您使用抽象基类,则可以定义那里的所有字段

class Base(models.Model):
    name = models.CharField(max_length=100)

    class Meta:
        abstract = True

arr = ['one','two','three','four']


for a in arr:
    locals()[f'Foo{a}'] = type(f'Foo{a}', (Base, ), {'__module__': Base.__module__})

正如评论中所说,这通常是一个坏主意,可能会导致一些奇怪的未定义行为