📜  向用户模型 django 添加额外字段 - Python (1)

📅  最后修改于: 2023-12-03 14:50:41.623000             🧑  作者: Mango

向用户模型 Django 添加额外字段

在 Django 中,用户模型是非常重要的,它存储了网站的注册用户信息。默认情况下,Django 提供了一个名为 User 的用户模型,它包含了必要的字段,比如 usernamepassword。但是,对于一些网站来说,这些字段可能是不够的,需要向用户模型添加额外的字段。

那么,如何向用户模型添加额外字段呢?

创建一个新的用户模型

我们可以通过继承 Django 自带的用户模型来创建一个新的用户模型,然后在新模型中添加我们需要的字段。

先从 Django 中导入 AbstractUser 类:

from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    # 添加我们需要的字段,比如手机号
    phone_number = models.CharField(max_length=20, blank=True, null=True)

在这个新的用户模型中,我们添加了一个新的字段 phone_number,它可以存储用户的手机号。其中,max_length 表示该字段的最大长度,blank=True, null=True 表示该字段可以为空。

更新 settings.py 文件

在创建新的用户模型后,我们需要告诉 Django 使用该模型作为用户认证的模型。打开 settings.py 文件,找到以下代码:

AUTH_USER_MODEL = 'auth.User'

将其改为:

AUTH_USER_MODEL = 'myapp.CustomUser'

其中,myapp 是项目的某个应用名称,CustomUser 是我们自定义的用户模型名称。

迁移数据库

现在,我们需要对数据库进行迁移。在命令行中执行以下命令:

python manage.py makemigrations myapp
python manage.py migrate

其中,myapp 是我们的自定义应用名。

使用新的用户模型

现在,我们可以使用新的用户模型进行用户认证了。但是需要注意的是,新的用户模型并不会自动创建用户,需要我们手动创建。

以下是一个示例:

from django.contrib.auth import get_user_model

# 获取用户模型
User = get_user_model()

# 创建一个新用户
user = User(email='example@example.com', phone_number='1234567890')
user.set_password(password)
user.save()

其中,我们使用 get_user_model() 方法获取用户模型,然后通过调用该模型的构造函数创建一个新的用户对象,并设置相应的字段值。

总结

在 Django 中,向用户模型添加额外字段并不是一件困难的事情。只需要创建一个新的用户模型,继承 Django 自带的用户模型,添加自己需要的字段,更新 settings.py 文件,并进行数据库迁移即可。