不能有多个具有相同选择的模型字段

时间:2013-10-14 12:12:01

标签: python django admin models

在我的django模型中,我试图设置这样的字段:

mouth = models.DecimalField(choices=SCALE, max_digits=2, decimal_places=1)
nose = models.DecimalField(choices=SCALE, max_digits=2, decimal_places=1)
persistance = models.DecimalField(choices=SCALE, max_digits=2, decimal_places=1)
rating = models.DecimalField(choices=SCALE, max_digits=2, decimal_places=1)

选择是全局定义的:

SCALE = ( (0.5*x, str(0.5*x)) for x in xrange(1,11) )

我在admin.py文件中注册了这些字段。 我遇到的问题是只有第一个定义的字段(在这种情况下是口),将显示选择列表。其他的根本不会显示任何列表。当我创建ModelForm实例并将其输出到模板时,会发生相同的情况:我没有得到其他字段的列表。

此外,如果我尝试反转字段的顺序,它仍然是第一个正确显示的字段,因此它不是与口字段本身相关的东西。

我需要传递一个选项才能让字段更“独特”吗?

1 个答案:

答案 0 :(得分:3)

在你的定义中,SCALE是一个生成器表达式,而不是一个序列,所以在第一次迭代后(在使用它的第一个字段上),生成器很可能已经耗尽。请尝试使用列表推导,即SCALE = [(0.5*x, str(0.5*x)) for x in xrange(1,11)]