'NoneType'对象没有属性'user'Django [英] 'NoneType' object has no attribute 'user' Django

查看:60
本文介绍了'NoneType'对象没有属性'user'Django的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我提交表单时遇到AttributeError:'NoneType'对象没有属性'user',请帮助我解决此问题

When i submit form i get an AttributeError: 'NoneType' object has no attribute 'user' please help meto fix this problem

我的forms.py

My forms.py

class resume_upload(forms.ModelForm):
    cv = forms.FileField(required = True)
    job_title = forms.CharField(required = True)

    def save(self, commit=False):
       cvs = super(resume_upload, self).save(commit=False)
       cvs.cv = self.cleaned_data['cv']
       cvs.job_title = self.cleaned_data['job_title']

       if commit:
           cvs.save()


    class Meta:
        model = Cv
        fields = ('cv', 'job_title',)

我的模型.py

class Cv(models.Model):
     user = models.OneToOneField(User, on_delete=models.CASCADE)
     cv = models.FileField(upload_to='cvs', default='', validators=[validate_file_extension])
     job_title = models.CharField(max_length=100, default='')

    def __str__(self):
        return self.job_title

和我的views.py

and my views.py

def upload_resume(request):
    if request.method == 'POST':
        form = resume_upload(request.POST, request.FILES)
        if form.is_valid():
            cv_form = form.save() # commit is False in this case.
            cv_form.user = request.user
            form.save(commit=True)
            return redirect('/')
        else:
            messages.error(request,"Oops! That didn't work. Please try again")
    else:
        form = resume_upload()
    return render(request, 'upload_resume.html',{'form':form,})

推荐答案

当您覆盖ModelForm resume_upload(forms.ModelForm)中的 save()方法时,您需要返回对象:

When you overwrite the save() method in your ModelForm resume_upload(forms.ModelForm) you need to return the object:

def save(self, commit=False):
    cvs = super(resume_upload, self).save(commit=False)
    cvs.cv = self.cleaned_data['cv']
    cvs.job_title = self.cleaned_data['job_title']

    if commit:
        cvs.save()

    return cvs

这篇关于'NoneType'对象没有属性'user'Django的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆