保存ModelForm数据Django CreateView表示Field缺失

时间:2014-10-22 15:51:51

标签: django django-forms

需要一些表格方面的帮助。尝试到处寻找,但似乎无法得到它。

当我尝试保存表格时,我会得到"非政府组织 这个字段是必需的。" 即使我选择了字段并从选择框中给它一个值。

返回的非政府组织是那些与当前登录用户相关联的非政府组织,但即使我从列表中选择一个,单击我的模板中的保存按钮,我收到验证错误,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)

1 个答案:

答案 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区分大小写