我有两个模型
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,我要保存当前用户。有人可以帮我吗?谢谢。
答案 0 :(得分:0)
尝试一下
form_instance.user = request.user.pk
如果不起作用,请添加模型。py
答案 1 :(得分:0)
也许您可以这样尝试:
form_instance.user = User.objects.get(pk=request.user.pk)
但是还要确保用户登录后才能进入此行(例如使用@login_required或LoginRequiredMixin)。