我需要制作一个包含 15 个相似字段的模型(我们称它们为 field_01
、field_02
、field_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/