在我的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实例并将其输出到模板时,会发生相同的情况:我没有得到其他字段的列表。
此外,如果我尝试反转字段的顺序,它仍然是第一个正确显示的字段,因此它不是与口字段本身相关的东西。
我需要传递一个选项才能让字段更“独特”吗?
答案 0 :(得分:3)
在你的定义中,SCALE
是一个生成器表达式,而不是一个序列,所以在第一次迭代后(在使用它的第一个字段上),生成器很可能已经耗尽。请尝试使用列表推导,即SCALE = [(0.5*x, str(0.5*x)) for x in xrange(1,11)]