我想在前面添加('','Day')。现在它为1到31的数字做了一个下拉菜单,我想在顶部选择'Day'。
DAY_CHOICES = (
# I was hoping this would work but apparently generators don't work like this.
# ('', 'Day'),
(str(x), x) for x in range(1,32)
)
# I'll include this in the snippet in case there's some voodoo I can do here
from django import forms
class SignUpForm(forms.Form):
day = forms.ChoiceField(choices=DAY_CHOICES)
答案 0 :(得分:6)
for i in itertools.chain(('foo', 'bar'), xrange(1, 4)):
print i
答案 1 :(得分:1)
DAY_CHOICES = ( (str(x),x) if x>0 else('','Day') for x in range(0,32) )
答案 2 :(得分:1)
这似乎是对发电机的糟糕使用。生成器不是列表,它是一个生成一系列值的函数,因此无法“将元组添加到生成器”。
模型初始化后,生成器将耗尽。例如,您可能希望稍后再次使用DAY_CHOICES - 这是不可能的。
如果您没有在此处使用生成器的任何非常具体的原因,我建议将DAY_CHOICES转换为列表:
DAY_CHOICES = [('', 'Day')] + [(str(x), x) for x in range(1,32)]