Инициализировать django CheckboxSelectMultiple со всем непроверенным? - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть форма модели, которая отображает ModelMultipleChoiceField как CheckboxSelectMultiple

class VisitForm(ModelForm):

    def __init__(self, queryset=None, *args, **kwargs):
        super(VisitForm, self).__init__(*args, **kwargs)
        if queryset:
            self.fields['students'] = forms.ModelMultipleChoiceField(
                queryset=queryset,
                widget=forms.CheckboxSelectMultiple()
            )

Это очень просто отображается в шаблоне прямо сейчас:

<div class="form-group">
    {{field.label}}
    {{field}}
</div>

Инициализируетсяхорошо с выборами, которые я ожидаю, чтобы быть там - но по умолчанию оба варианта checked

Я пытаюсь выяснить, как инициализировать блоки, чтобы они были unchecked по умолчанию.

Каков наилучший способ сделать это?

Он инициализируется в view следующим образом:

visitor = Visitor.objects.get(unique_id=unique_id)
students = Student.objects.filter(parents__unique_id=unique_id)
form = VisitForm(initial={'visitor':visitor, 'students':students}, queryset=students)

1 Ответ

0 голосов
/ 24 апреля 2018

Вы передаете набор запросов students в качестве исходных данных, поэтому Django выбирает каждого учащегося в наборе запросов.

Вы можете использовать пустой набор запросов Student.objects.none(), но удалить его еще проще students из словаря initial:

form = VisitForm(initial={'visitor':visitor}, queryset=students)
...