[英]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.