Django的。选择字段的初始值是动态的

时间:2015-09-18 03:41:48

标签: django django-forms

我试图在视图中动态设置选择字段的初始值。但它不起作用,不确定是什么问题:

views.py

...
form = FormEditGroup(initial={
            'choices_a': group.get_a(),
            'choices_i': group.get_i(),
            })

get_a()是一种返回" open"的模型方法。或者"关闭",get_i()返回"管理员"或者"所有"。

forms.py

class FormEditGroup(forms.Form):
    choices_a = (("closed", "Closed"), ("open", "Open"))
    choices_i = (("all", "All"), ("admins", "Admins"))

    a = forms.ChoiceField(... choices=choices_a),
    i = forms.ChoiceField(... choices=choices_i),

没有将初始值设置为get_a()get_i()返回。

1 个答案:

答案 0 :(得分:2)

您应该将initial字典中的表单字段名称作为键传递。

来自Form.initial

上的文档
  

如果给出此参数,则应该是字典映射字段名称   初始值。

更改您的'choices_a''choices_i'密钥,分别形成字段名称ai

请尝试以下代码:

form = FormEditGroup(initial={
            'a': group.get_a(), # initial value for 'a'
            'i': group.get_i(),  # initial value for 'i'
            })