首页 > 后端开发 > Python教程 > 如何使用自定义字段最好地扩展 Django 用户模型?

如何使用自定义字段最好地扩展 Django 用户模型?

Mary-Kate Olsen
发布: 2024-12-16 13:29:14
原创
262 人浏览过

How to Best Extend the Django User Model with Custom Fields?

扩展 Django 用户模型:最佳方法

使用自定义字段扩展内置 Django 用户模型时,有两种主要方法脱颖而出:

1。使用 OneToOneField(User) 属性

这是推荐的 Django 方法,涉及创建与 User 模型具有一对一关系的新模型。这个“个人资料”模型可以存储有关用户的附加信息。

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    # Custom fields here, e.g.:
    address = models.CharField(max_length=255)
    phone_number = models.CharField(max_length=15)
    # ...
登录后复制

2.使用自定义用户模型替换

这种方法涉及将 Django 用户模型完全替换为包含所需修改的自定义模型。然而,它被认为是激烈的,并带有警告:

  • 它可能会破坏依赖于用户模型的其他 Django 功能。
  • 它涉及复制和更改 Django 身份验证模块。
  • 可能需要重新实施身份验证

使用电子邮件作为用户名

要使用电子邮件作为用户名,您可以:

  • 覆盖 get_username () 自定义用户模型中的方法。
  • 利用 set_username()更新现有用户的用户名的方法。

示例:

class CustomUser(AbstractUser):

    def get_username(self):
        return self.email

# ...
user = CustomUser.objects.get(username='john@example.com')
user.set_username('jack@example.com')
user.save()
登录后复制

以上是如何使用自定义字段最好地扩展 Django 用户模型?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板