Python Django用户使用自定义用户模型注册无效
我有一个Django自定义用户模型“es_user”,它继承了Django的默认用户模型。当用户注册时,它可以正常工作,但该用户将是“用户”的一部分,并且不会添加任何内容到es_用户。因此,每次用户注册时,我都必须进入管理面板,将已登录的“用户”添加到“es_用户” 为了解决这个问题,我将这2行添加到views.pyPython Django用户使用自定义用户模型注册无效,python,django,django-class-based-views,django-users,Python,Django,Django Class Based Views,Django Users,我有一个Django自定义用户模型“es_user”,它继承了Django的默认用户模型。当用户注册时,它可以正常工作,但该用户将是“用户”的一部分,并且不会添加任何内容到es_用户。因此,每次用户注册时,我都必须进入管理面板,将已登录的“用户”添加到“es_用户” 为了解决这个问题,我将这2行添加到views.py es_user_instance = es_user.objects.create(user= req_user) es_user_instance.save() class
es_user_instance = es_user.objects.create(user= req_user)
es_user_instance.save()
class es_user(models.Model):
user = models.OneToOneField(User,related_name='es_user', on_delete=models.CASCADE)
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})
class SignUpForm(forms.ModelForm):
class Meta:
model = User
fields = ('username', 'email', 'password')
这给了我这个错误
ValueError at /signup/
Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7f9c787b9be0>>": "es_user.user" must be a "User" instance.
视图.py
es_user_instance = es_user.objects.create(user= req_user)
es_user_instance.save()
class es_user(models.Model):
user = models.OneToOneField(User,related_name='es_user', on_delete=models.CASCADE)
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})
class SignUpForm(forms.ModelForm):
class Meta:
model = User
fields = ('username', 'email', 'password')
forms.py
es_user_instance = es_user.objects.create(user= req_user)
es_user_instance.save()
class es_user(models.Model):
user = models.OneToOneField(User,related_name='es_user', on_delete=models.CASCADE)
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})
class SignUpForm(forms.ModelForm):
class Meta:
model = User
fields = ('username', 'email', 'password')
谁能告诉我哪里出了问题
注意:我使用了此自定义用户模型,因为稍后我将向“es_user”添加更多字段。问题在于
req_user=request。由于您尚未登录该用户,用户
正在返回一个匿名用户
。因此,在使用request.user
之前,首先
或者,您可以只添加刚刚创建的用户而不登录:
es_user_instance = es_user.objects.create(user=signup_form_instance2)
谢谢@damores我已经尝试了你建议的两种方法,效果很好