无法分配“ <simplelazyobject:<user:=“” johndoe12 =“” >>“:“ Profile.user”必须是“ User”实例

时间:2019-01-14 03:37:37

标签: django django-views

我有两个模型

class User(auth.models.User,auth.models.PermissionsMixin):

    def __str__(self):
        return "@{}".format(self.username)

class Profile(models.Model):
    user = models.OneToOneField(User,default=None, 
                   null=True,on_delete=models.CASCADE,)
    name = models.CharField(max_length=128) #actual creator's name

在forms.py

class ProfileForm(forms.ModelForm):

    class Meta:
        exclude = ['user']
        # fields = '__all__'
        model = models.Profile

在views.py

def TestPage(request):

    form = ProfileForm

    if request.method == "POST":
        form = ProfileForm(request.POST)

        if form.is_valid():
            form_instance=form.save(commit=False)
            form_instance.user = request.user
            form_instance.save()
            return render(request,'test.html')
        else:
            print('ERROR FORM INVALID')

    return render(request,'accounts/update_profile.html',{'form':form})

我认为form_instance.user = request.user行存在问题。我收到一个错误无法分配“>”:“ Profile.user”必须是“ User”实例。要Profile.user,我要保存当前用户。有人可以帮我吗?谢谢。

2 个答案:

答案 0 :(得分:0)

尝试一下

form_instance.user = request.user.pk

如果不起作用,请添加模型。py

答案 1 :(得分:0)

也许您可以这样尝试:

form_instance.user = User.objects.get(pk=request.user.pk)

但是还要确保用户登录后才能进入此行(例如使用@login_requiredLoginRequiredMixin)。