django - Django 模型中的重复字段

标签 django model field

我需要制作一个包含 15 个相似字段的模型(我们称它们为 field_01field_02field_03 等)。我还需要这些字段易于使用(例如,能够执行 obj.field_01 之类的操作)。因为我想真正快速地得到一些东西,所以我只是以愚蠢的方式创建它们:

class M (models.Model):
    ....
    field_01 = models.NullBooleanField()
    field_02 = models.NullBooleanField()
    ....

我在网上搜索了执行此操作的更好方法。有人说使用 setattr,但据我阅读和尝试一些东西可以看出,这会向类的实例添加属性,而不是类本身,这意味着当我尝试将模型表单附加到该模型时,它不会看到使用 setattr 添加的字段。然后我尝试重写 __new__ 函数,这将允许我在创建该类的实例之前向该类添加属性。但我无法弄清楚如何做到这一点。

那么,有什么方法可以在不破坏 South 和模型表单且无需复制粘贴的情况下生成这些字段?

最佳答案

如果没有一个具体的例子说明你在做什么,很难下定论,但一般来说,如果你发现自己重复了一个字段,那么这是一对多或多对多关系的明确标志,相反:

一对多

class Field(models.Model):
    m = models.ForeignKey(M, related_name='fields')
    field = models.NullBooleanField()

多对多

class Field(models.Model):
    field = models.NullBooleanField()

class M(models.Model):
    fields = models.ManyToManyField(Field)

关于django - Django 模型中的重复字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11906485/

相关文章:

java - (Java) 不使用参数或 ModelAndView 访问 Spring Model

ajax - ExtJS-网格为空但存储已加载

python - Django DatabaseError - 没有这样的保存点

django-social-auth 通过 facebook_id 以编程方式创建新用户

python - 同时转换为 SHA512 哈希

database-design - Ms-Access:任何对可变长度文本字段的小尺寸需求

javascript - 将呈现的输入值放入另一个输入字段

python - Django,测试重定向到外部页面

ruby-on-rails - ruby on rails has_one与唯一的关联

ms-access - MS Access 将记录移动到字段中