Auth 和 User Django 的一个用户模型
One User model for Auth and User Django
我正在使用 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'
如您所见,我有 2 个用户模型。我最终必须通过注册创建授权用户,然后在我的主页视图中执行此操作:
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()
这是我想避免做的黑客行为。
谢谢
您正在添加另一个具有相同名称用户的模型。它已经在那里了。如果您要扩展用户模型,则无需再添加 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()
这将扩展您现有的用户模型。
我正在使用 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'
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()
这是我想避免做的黑客行为。
谢谢
您正在添加另一个具有相同名称用户的模型。它已经在那里了。如果您要扩展用户模型,则无需再添加 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()
这将扩展您现有的用户模型。