Auth和用户Django的一个用户模型

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

我使用Django身份验证功能来创建用户。我还想扩展用户添加个人资料图片和其他信息。

我的问题是我现在必须要管理用户模型。一个来自Auth,一个来自我创建的模型。无论如何要整合成1个型号吗?

来自urls.py:

path('accounts/',include('django.contrib.auth.urls'))

来自models.py:

class User(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    firstName = models.CharField(max_length=200)
    lastName = models.CharField(max_length=200)
    image= models.ImageField(upload_to='profile_image',default='profile_image/SSMILE.jpg')

来自views.py

class SignUp(generic.CreateView):
    form_class = UserCreationForm
    success_url = reverse_lazy('login')
    template_name = 'signup.html'

I have 2 User models正如您所看到的,我有2个用户模型。我必须通过注册创建auth用户,然后在我的主页视图中执行以下操作:

if str(request.user) != "AnonymousUser":
    try:
        getuser = User.objects.get(user=request.user)
        print(getuser)
    except User.DoesNotExist:
        newUser= User(user=request.user,firstName=request.user,lastName="change")
        newUser.save()

这是我想避免做的黑客攻击。

谢谢

django django-authentication django-users
1个回答
1
投票

您正在添加具有相同名称User的另一个模型。它已经存在了。如果要扩展用户模型,则不需要再添加first_name或last_name,

检查一下,

class Profile(models.Model):
   profile_picture = models.ImageField(upload_to=#add your path)
   user = models.OneToOneField(User, on_delete=models.CASCADE)


@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
      Profile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
     instance.profile.save()

这将扩展您现有的用户模型。

© www.soinside.com 2019 - 2024. All rights reserved.