MultipleChoiceField: проверить все, если ничего не отмечено

То, что я хочу сделать, кажется простым: у меня есть MultipleChoiceField в форме django, которая предлагает идентификатор и псевдо все книги в модели с именем Dico:

class FiltreMonoForm(forms.Form):
    dico_choices = []
    for dic in Dico.objects.all().order_by('pseudo'):
        dico_choices.append((dic.id, dic.pseudo))
    dico_choices=tuple(dico_choices)

    dicos = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, choices=dico_choices, initial=[c[0] for c in dico_choices], label="Diccionaris sorsas")

Я получаю эту форму обратно в виде:

def monollist(request):
    if request.GET:
        getcopy = request.GET.copy()
        form = FiltreMonoForm(getcopy)
        dicos = form.cleaned_data['dicos']
    else:
        form = FiltreMonoForm()

Я хотел бы проверить все книги, если пользователь не проверил ни одну из них. Что-то вроде:

if request.GET:
    getcopy = request.GET.copy()
    form = FiltreMonoForm(getcopy)
    dicos = form.cleaned_data['dicos']

    for dic in Dico.objects.all().order_by('pseudo'):
        dico_choices.append((dic.id, dic.pseudo))
    dico_choices=tuple(dico_choices)

    if len(dicos)==0:
        form['dicos']=dico_choices

Но я не могу найти, как изменить значение MultipleChoicesField. Я пробовал с

form.data['dicos']=dico_choices

но кажется, что я могу дать только одно значение для form.data['dicos'], он не будет принимать списки или кортежи.

Я пытался переопределить метод __init__ в моей форме при добавлении

self.data.update(dicos=dico_choices)

но у меня та же проблема, она работает, только если dico_choices это одно значение.

У вас есть идея, как переопределить мой MultipleChoiceField с несколькими значениями?

Спасибо

1 ответ

Сопровождающее решение проблем и проповедь, руководство по редактированию и редактированию материалов:

if 'dicos' not in getcopy:
            for dic in Dico.objects.all():
                getcopy.update({'dicos': dic.id})
Другие вопросы по тегам