Django用户注册使用自定义用户模型无法正常工作

问题描述 投票:1回答:1

我有一个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'中添加更多字段。

python django django-class-based-views django-users
1个回答
2
投票

问题是req_user = request.user正在返回AnonymousUser,因为您还没有登录用户。所以在使用request.user之前,首先使用login the user

或者,您可以添加刚刚创建的用户而无需将其登录:

es_user_instance = es_user.objects.create(user=signup_form_instance2)
© www.soinside.com 2019 - 2024. All rights reserved.