Django表格无效

时间:2016-12-12 23:20:25

标签: django django-models django-forms django-views pinax

我是Django的新手。进入新版本后,我遇到了一些形式问题。以下,

1,模型

class UserProfileDetails(models.Model):

user = models.OneToOneField(User)
profilePicture = models.ImageField('Profile Picture',upload_to='static/ProfilePic/', null=True,blank=True)

def __str__(self):
    return self.user.username

2,表格

class imageUploadForm(forms.ModelForm):
class Meta:
    model=  UserProfileDetails
    fields = ['user','profilePicture']

3,最后是视图功能

def upload_pic(request):
current_user = request.user
if request.method == 'POST':
    form = imageUploadForm(request.POST, request.FILES)
    if form.is_valid():
        pic = form.cleaned_data['profilePicture']
        m = UserProfileDetails(user= current_user.id,profilePicture=pic)
        m.save()
    else:
        raise NotImplemented("What if the user doesn't have an associated profile?")

return HttpResponseRedirect(reverse('polls:profile'))

此代码适用于Django 1.8。但在移植到Django 1.10.4后,表单无效。我相信,问题在于 OneToOneField

IMP :此外,我正在使用pinax帐户应用进行帐户管理。

为什么此表单无效?

1 个答案:

答案 0 :(得分:1)

当您提交表单时,似乎没有为两个字段(用户和个人资料图片)提供正确的输入。我的猜测是你没有通过表单发送用户,这意味着它无效。所以你只是上传图片。

您不需要在表单字段属性中使用“user”,因为您已在“request.user”视图中访问该属性。因此,请从表单中删除“用户”字段。

另外,要确保它是正确的,请将'user = current_user.id'更改为'user = current_user',这样您就可以将实例与实例匹配,而不是将实例与id匹配。