'NoneType'对象没有属性'user' Django



当我提交表单时,我得到一个AttributeError:"NoneType"对象没有属性"user"请帮助我解决这个问题

我的表格.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

和我的观点.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,})

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

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

当你以这种方式设置字段时,你隐藏了你的用户字段,所以当你试图将request.user传递给表单时,他们无法在表单中找到属性用户

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

最新更新