Django Forms - Мета-класс декларативных полей не является итерируемым

Почему django выбрасывает мне ошибку TypeError at /primary argument of type DeclarativeFieldsMetaclass is not iterable.

Я впервые пытаюсь работать с django-forms, после того, как я добавил это в мой forms.py файл, он продолжает показывать мне сообщение об ошибке: TypeError at /primary argument of type 'DeclarativeFieldsMetaclass' is not iterable, как я могу решить эту проблему?

Forms.py

from django import forms
from .models import Primary, PrimaryAlbum, Secondary, SecondaryAlbum
from jsignature.forms import JSignatureField
from jsignature.widgets import JSignatureWidget

class PrimaryForms(forms.Form):
    signature_of_student = JSignatureField(
        widget=JSignatureWidget(
            jsignature_attrs={'color':'#e0b642', 'height':'200px'}
            )
            )

    class Meta:
        model = Primary
        fields = ['admission_number', 'profile_picture', 'first_name', 
        'last_name', 'gender', 'address_of_student', 'class_Of_student', 'signature_of_student']

Views.py

from .forms import PrimaryForms

class CreatePrimaryStudent(LoginRequiredMixin, CreateView):
    model = Primary
    fields = PrimaryForms
    template_name = 'create_primary_student_information.html'
    success_url = reverse_lazy('Home')

    def get_form(self, form_class=None):
        form = super().get_form(form_class)
        form.fields['year_of_graduation'].queryset = PrimaryAlbum.objects.filter(user=self.request.user)
        return form

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super(CreatePrimaryStudent, self).form_valid(form)

Я решил свою проблему, изменив его с fields = PrimaryForms на form_class в views.py файле в классе CreatePrimaryStudent, а для forms.py файла я изменил метод класса с: class PrimaryForms(forms.Form): на class PrimaryForms(forms.ModelForm):

forms.py

class PrimaryForms(forms.ModelForm):
    signature_of_student = JSignatureField(
        widget=JSignatureWidget(
            jsignature_attrs={'color':'#e0b642', 'height':'200px'}
            )
            )
    
    signature_of_guardian = JSignatureField(
        widget=JSignatureWidget(
            jsignature_attrs={'color':'#e0b642', 'height':'200px'}
            )
            )
     class Meta:
        model = Primary
        fields = ['admission_number', 'profile_picture', 'first_name', 
        'last_name', 'gender', 'address_of_student', 'class_Of_student', 'signature_of_student']

Views.py


class CreatePrimaryStudent(LoginRequiredMixin, CreateView):
    model = Primary
    form_class = PrimaryForms
    template_name = 'create_primary_student_information.html'
    success_url = reverse_lazy('Home')

    def get_form(self, form_class=None):
        form = super().get_form(form_class)
        form.fields['year_of_graduation'].queryset = PrimaryAlbum.objects.filter(user=self.request.user)
        return form

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super(CreatePrimaryStudent, self).form_valid(form)

Django Docs

Вернуться на верх