在同一模型中的两个不同字段中使用相同的选项

时间:2012-06-04 06:09:00

标签: django django-models django-forms

这有什么原因吗? /任何使它工作的方法? (没有定义另一个选择集)

class Foo(models.Model):
    BAR_CHOICES = ((str(x), str(x)) for x in range(5))

    bar = models.CharField(max_length = 1, choices = BAR_CHOICES)
    barbar = models.CharField(max_length = 1, choices = BAR_CHOICES)

class FooForm(forms.ModelForm):
    class Meta:
        model = Foo

class FooAdmin(admin.ModelAdmin):
    pass

admin.site.register(Foo, FooAdmin)

然后,如果您转到admin页面或制作ModelForm,则只会显示第一个字段的选项

像这样:

>> foo_form = FooForm()
>> print foo_form
<tr><th><label for="id_bar">Bar:</label></th><td><select name="bar" id="id_bar">
<option value="" selected="selected">---------</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select></td></tr>
<tr><th><label for="id_barbar">Barbar:</label></th><td><select name="barbar" id="id_barbar">
<option value="" selected="selected">---------</option>
</select></td></tr>

enter image description here

编辑

以显示FooForm,FooAdmin和Admin img

1 个答案:

答案 0 :(得分:2)

您已通过genex定义Foo.BAR_CHOICES。请改用LC,以便可以多次迭代。