[英]Django Forms - Declarative Fields Meta class is not iterable
为什么 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']
视图.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)
我通过在CreatePrimaryStudent
class 下的views.py
文件中将其从fields = PrimaryForms
更改为form_class
来解决我的问题,对于forms.py
文件,我将 class 方法从: 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']
视图.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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.