Создание поля множественного выбора с использованием отношения "многие ко многим

Я пытаюсь добавить поле под названием, interested_fields внутри моей модели personalInfo, из которого пользователи могут выбирать, а сами варианты приходят из объектов другой модели с помощью отношения ManyToMany между двумя моделями. Вот мои коды models.py (я упростил свою модель personalInfo, удалив некоторые другие поля, такие как имя, возраст и т.д., чтобы сделать ее более читабельной для вас):

class Field(models.Model):
    id = models.AutoField(primary_key=True)
    slug = models.CharField(max_length=16, default='default')
    title = CharField(max_length=32)


class PersonalInfo(models.Model):
    id = models.AutoField(primary_key=True)
    interested_fields = models.ManyToManyField(Field, blank=True)

Затем я создал ModelForm следующим образом:

class InterestedFieldsForm(forms.ModelForm):
    interested_fields = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=Field.objects.all(), required=False)

    class Meta:
        model = PersonalInfo
        fields = ['interested_fields']

и создал функции get и post внутри моих представлений следующим образом:

class PersonalView(View):
    template_name = 'reg/personal.html'

    def get(self, request, *args, **kwargs):
        context = {}
        context['fields'] = Field.objects.all()
        return render(request, self.template_name, context=context)

    def post(self, request, *args, **kwargs):
        user = request.user
        if request.method == 'POST':
            form = InterestedFieldsForm(request.POST)
            if form.is_valid():
                profile = form.save(commit=False)
                profile.user = request.user
                profile.save()
        else:
            form = InterestedFieldsForm()

        return render(request, 'reg/done.html', context={'form': form})

и наконец в шаблоне, внутри формы я добавил этот цикл for:

{% for field in fields %}
                                <label class="containerq ant-col ant-col-md-6 ant-col-xs-8" >
                                    <span>
                                        <input type="checkbox" name="interested_fields" {% if field.slug in user.personalInfo.interested_fields %} checked="checked" {% endif %} value="{{field.title}}">
                                        <span style="margin-left:7px" class="checkmark"></span>
                                    </span>
                                    <span>{{field.title}}</span>
                                </label>
                            {% endfor %}

когда я отправляю форму, она выдает мне эту ошибку: cannot unpack non-iterable Field object Я новичок в django, поэтому я действительно не знаю, что я делаю неправильно. спасибо за ваши ответы

Вы должны использовать ModelMultipleChoiceField

interested_fields = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=Field.objects.all(), required=False).
Вернуться на верх