我有一个Django自定义用户模型'es_user',它继承了Django的默认用户模型。当用户注册它工作正常,但该用户将成为'用户'的一部分,没有任何东西将添加到es_user。因此,每次用户注册时,我都要转到管理面板,并将“用户”签名添加到“es_user”。
所以要解决这个问题,我将这些2添加到了views.py的行中
es_user_instance = es_user.objects.create(user= req_user)
es_user_instance.save()
这给了我这个错误
ValueError at /signup/
Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7f9c787b9be0>>": "es_user.user" must be a "User" instance.
models.朋友
class es_user(models.Model):
user = models.OneToOneField(User,related_name='es_user', on_delete=models.CASCADE)
views.朋友
def signup(request):
signup_form_instance = SignUpForm()
if request.method == "POST":
signup_form_instance = SignUpForm(request.POST)
if signup_form_instance.is_valid():
signup_form_instance2 = signup_form_instance.save(commit = False)
req_user = request.user
signup_form_instance2.password = make_password(signup_form_instance.cleaned_data['password'])
signup_form_instance2.save()
es_user_instance = es_user.objects.create(user= req_user)
es_user_instance.save()
return index(request)#successful signup redirect or return
else:
print("SIGN UP FORM INVALID")
return render(request,'signup.html',{'signup_form':signup_form_instance})
forms.朋友
class SignUpForm(forms.ModelForm):
class Meta:
model = User
fields = ('username', 'email', 'password')
谁能告诉我问题出在哪里?
注意:我已经使用了这个自定义用户模型,因为我稍后会在'es_user'中添加更多字段。
问题是req_user = request.user
正在返回AnonymousUser
,因为您还没有登录用户。所以在使用request.user
之前,首先使用login the user。
或者,您可以添加刚刚创建的用户而无需将其登录:
es_user_instance = es_user.objects.create(user=signup_form_instance2)