我正在使用字符串数组在 Django 中创建模型。
例如。让有一个名为 arr 的字符串数组
arr = ['one','two','three','four']
然后我必须在 Django 中创建四个模型,分别命名为 FooOne、FooTwo、FooThree、FooFour。它们都具有相同的字段。有什么方法可以让我不必手动创建这些模型,即,我只需更新字符串数组并运行脚本,就会自动为我创建模型?我使用 MySQL 作为数据库。
答案 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__})
正如评论中所说,这通常是一个坏主意,可能会导致一些奇怪的未定义行为