动态设置复选框的初始值

bbr*_*oke 4 forms django

我有一个带有 CheckboxSelectMutliple 小部件的 MultipleChoiceField :

weight_training_days = forms.MultipleChoiceField(
    help_text=u'(Required) 3 days must be selected',
    widget=forms.CheckboxSelectMultiple(attrs={
        'inline': True,
    }),
    choices=(
        (0, "Mon"),
        (1, "Tue"),
        (2, "Wed"),
        (3, "Thu"),
        (4, "Fri"),
        (5, "Sat"),
        (6, "Sun"),
    ),
)
Run Code Online (Sandbox Code Playgroud)

我正在尝试将 7 个复选框中的 3 个动态设置为“True”。理想情况下,我会从这个角度来做这件事。

def change_challenge_settings_page(request):

    c = Challenge.objects.get(user__exact = request.user,chal_status=1)

    layout = 'horizontal'
    form =UpdateChallengeSettingsForm(initial={'goal': c.level_goal }) 

    return render(request, 'portal/portal_change_challenge_settings.html', {'form': form,'layout': layout,'scorecard_page': True,})
Run Code Online (Sandbox Code Playgroud)

我知道如何使用 ChoiceFields(在上面的示例中,“目标”是一个 ChoiceField)但在涉及 MultipleChoiceFields 时被卡住了。我真的很感激任何想法/反馈。

Nge*_*tor 5

您可以将首字母设置为列表。在这种情况下,如果您进行设置YourForm(inital={'weight_training_days': [0,1,2]}),它将默认选择星期一、星期二和星期三。你也可以这样做forms.MultipleChoiceField(... inital=[0,1,2] ...)