我有一长串包含 100 个标签的列表,我需要我的模型将其作为字段,并连续调用以在代码的其他部分访问它们。我将来需要修改它们,所以我希望能够在一个地方完成。有没有一种简单的方法可以做到这一点。例如:
labels = ['height', 'weight', 'age']
在模型.py中
class MyModel(models.Model):
for label in labels:
label = models.CharField(max_length=255)
上面是否等于:
class MyModel(models.Model):
height = models.CharField(max_length=255)
weight = models.CharField(max_length=255)
age = models.CharField(max_length=255)
最佳答案
Django 模型有一个 add_to_class
方法,可以将字段(或任何属性,实际上)添加到类中。语法是 MyModel.add_to_class(name, value)
。生成的代码将是:
class MyModel(models.Model):
pass
for label in labels:
MyModel.add_to_class(label, models.CharField(max_length=255))
在内部,这将对传递的值调用 contribute_to_class
方法(如果该方法存在)。静态属性按原样添加到类中,但字段具有此方法,所有后续处理都会随之而来。
关于python - Django - 使用 for 循环从列表创建模型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24725724/