姜戈。动态选择字段的初始值

Django. Initial value of Choice Field dynamically

我正在尝试在视图中动态设置选择字段的初始值。但是不行,不知道哪里出了问题:

views.py

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

get_a()是returns "open" or "closed", get_i() returns "admins" or "all"。

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() return。

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

来自 Form.initial

上的文档

This argument, if given, should be a dictionary mapping field names to initial values.

更改 'choices_a''choices_i' 键以分别形成字段名称 ai

试试下面的代码:

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