Django CreateView:将ForeignKey附加到CustomForm数据

Amy*_*yth 3 python django foreign-keys form-data create-view

我有一个CreateView如下:

class ResumeCreateView(CreateView):
    model = Resume

    def form_valid(self, request, form):
        candidate = Candidate.objects.get(user=self.request.user)
        self.object = form.save(commit=False)
        self.object.candidate = candidate
        self.object.save()
        f = self.request.FILES.get('file')
        data = [{
            'title': self.request['title'],
            'name': f.name,
        }]  
        response = JSONResponse(data, {}, response_mimetype(self.request))
        response['Content-Disposition'] = 'inline; filename=files.json'
        return response
Run Code Online (Sandbox Code Playgroud)

在这里,我试图将追加candidate实例的Resume模型候选项目这是一个ForeignKeyCandidate模型.

但我总是收到验证错误 {'candidate' : 'This field is required'}

  • 我使用自定义表单而不是模型表单,因为它使用twitter引导标识符.

我错过了什么?

Roh*_*han 11

您必须定义一个modelFormwith candidateas except字段,然后在form_valid()方法中设置它.

class ResumeForm(forms.ModelForm):
    class Meta:
        model = Resume
        exclude = ('candidate',)

class ResumeCreateView(CreateView):
    form_class = ResumeForm
    model = Resume

    def form_valid(self, form):
        form.instance.candidate = Candidate.objects.get(user=self.request.user)
        ....
Run Code Online (Sandbox Code Playgroud)

更详细的参考资料:Models和request.user