1

在我的 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 实例并将其输出到模板中时,也会发生同样的情况:我没有得到其他字段的列表。

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

我需要通过一个选项来使字段更加“独特”吗?

4

1 回答 1

3

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

于 2013-10-14T12:32:39.593 回答