【发布时间】:2012-08-08 00:58:01
【问题描述】:
我需要创建一个具有 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 和模型形式且不复制粘贴的情况下生成这些字段?
【问题讨论】: