需要一些表格方面的帮助。尝试到处寻找,但似乎无法得到它。
当我尝试保存表格时,我会得到"非政府组织 这个字段是必需的。" 即使我选择了字段并从选择框中给它一个值。
返回的非政府组织是那些与当前登录用户相关联的非政府组织,但即使我从列表中选择一个,单击我的模板中的保存按钮,我收到验证错误,NGO此字段是必填项。
我能错过什么? 的 forms.py
class QuestionaireAnswerForm(ModelForm):
ngo = ModelChoiceField(queryset=NGO.objects.none(),widget=Select(attrs={'class': 'form-control'}))
costcategory = ModelChoiceField(queryset=CostCategory.objects.all() ,widget=Select(attrs={'class': 'form-control'}))
question = ModelChoiceField(queryset=Question.objects.none(),widget=Select(attrs={'class': 'form-control'}))
.... more fields below
def __init__(self, donor, *args, **kwargs):
super(QuestionaireAnswerForm,self).__init__(*args, **kwargs)
ngos = NGO.objects.filter(donor__donor__username=donor)
self.fields['ngo'].queryset=ngos
self.fields['ngo'].initial=ngos[0].pk
views.py
class QuestionaireAnswerView(LoginRequiredMixin,CreateView):
form_class = QuestionaireAnswerForm
template_name = "questionaire.html"
def get_form_kwargs(self):
kwargs = super(QuestionaireAnswerView,self).get_form_kwargs()
kwargs['donor'] = self.request.user
return kwargs
def form_valid(self, form):
form.instance.donor = Donor.objects.get(user=self.request.user)
return super(QuestionaireAnswerView, self).form_valid(form)
def get_success_url(self):
return "/account/"+ str(self.request.user)
答案 0 :(得分:0)
挑战在于NGO / ngo领域的命名
在我的 models.py 中,我将非政府组织字段命名为非政府组织,并在我的 forms.py 中将其称为ngo,这就是为什么Django会抛出字段非政府组织的错误必需的。
在 forms.py 的字段列表中将字段从ngo重命名为NGO解决了这样的问题
来自
ngo = ModelChoiceField(queryset=NGO.objects.none(),widget=Select(attrs={'class': 'form-control'}))
到
NGO = ModelChoiceField(queryset=NGO.objects.none(),widget=Select(attrs={'class': 'form-control'}))
Python区分大小写