python - Django - 使用 for 循环从列表创建模型字段

标签 python django

我有一长串包含 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/

相关文章:

python - 如何使用 PIL 根据人脸检测裁剪选定区域?

python - 将 blob 图像从 sqlite db 插入 QPixMap 到 PyQt5 中的 QTextBrowser

python - Celery - 没有名为 'celery.datastructures' 的模块

CSS 在开发人员服务器上的 Django 管理员上损坏

python - 在没有多次数据库请求的情况下在 Django 中多次调用外键对象

python - 为动态类型指定元类

python - 是否可以在没有 grako 的情况下使用 grako 生成的解析器?

python - 如何在 Django 中创建动态创建的单选按钮表单

django - 寻找基于 Django 类的 View 并在单个页面上具有多个表单示例

python - Cython 作为 Python 到 C 转换器的示例程序