Django Form | Group Model | MultiSelect | Получение только одного значения из формы с помощью виджета MultiSelect

Я пытаюсь получить ввод от пользователя в шаблоне, я показываю список групп в шаблоне, доступных из модели Group в Django Auth Models и ожидаю несколько значений. Но он возвращает только одно значение даже при выборе нескольких вариантов

from django.contrib.auth.models import Group

class MyForm(forms.ModelForm):
    
    the_choices = forms.ModelMultipleChoiceField(queryset=Group.objects.all(),
                                                 required=False, 
                                                 widget=forms.CheckboxSelectMultiple)

    class Meta:
        model = Group
        exclude = ['name', 'permissions']

    
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)

ссылки на изображения ниже

Шаблон - Изображение формы ввода

Вывод в консоль

КодView.py

обратитесь к изображению 2, я ожидаю 1 и 2 (предпочтительное имя группы) в консоли, но она возвращает только 2.

Если вы обращаетесь к request.POST.get('key') (или request.POST['key']), вы получаете только последнее значение, связанное с этим ключом.

Вы получаете доступ ко всем значениям с помощью метода .getlist(…) [Django-doc]:

print(request.POST.getlist('the_choices'))

Но обычно вы обрабатываете данные с помощью самой формы, поэтому:

form = MyForm(request.POST, request.FILES)
if form.is_valid():
    print(form.cleaned_data['the_choices'])

Это также очистит данные и вернет объекты модели, а не их первичные ключи.

использовать getlist

https://docs.djangoproject.com/en/4.0/ref/request-response/#django.http.QueryDict.getlist

попробуйте это

the_choices = request.POST.getlist('the_choices')
Вернуться на верх