一尘不染

在Django表单上设置所选值

django

这是形式的字段声明:

max_number = forms.ChoiceField(widget = forms.Select(), 
    choices = ([('1','1'), ('2','2'),('3','3'), ]), initial='3', required = True,)

我想将初始值设置为3,这似乎不起作用。我玩过参数,引号/无引号等,但是没有变化。

如果有可能,谁能给我一个明确的答案?和/或对我的代码段进行必要的调整?

我正在使用Django 1.0


阅读 388

收藏
2020-03-27

共2个答案

一尘不染

实例化表单时,请尝试设置初始值:

form = MyForm(initial={'max_number': '3'})
2020-03-27
一尘不染

这并没有解决眼前的紧迫问题,但是此Q / A用于与尝试将选定值分配给相关的搜索ChoiceField

如果已经super().__init__在Form类中调用过,则应该更新form.initial字典,而不是field.initial属性。如果你学习form.initial(例如print self.initial,在调用之后super().__init__),它将包含所有字段的值。具有值None在字典将覆盖field.initial值。

例如

class MyForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        # assign a (computed, I assume) default value to the choice field
        self.initial['choices_field_name'] = 'default value'
        # you should NOT do this:
        self.fields['choices_field_name'].initial = 'default value'
2020-03-27