django——继承默认User模型进行自定义

自定义用户模型在 Django 中非常常见。下面是一个简单的示例,演示如何扩展 Django 默认的 User 模型,以添加自定义字段和方法:

python复制代码
from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    # 添加自定义字段
    age = models.PositiveIntegerField(null=True, blank=True)
    bio = models.TextField(max_length=500, blank=True)

    # 添加自定义方法
    def get_full_name(self):
        return f"{self.first_name} {self.last_name}"

在上面的代码中,我们从 django.contrib.auth.models 导入了 AbstractUser 类,并创建了一个名为 CustomUser 的子类。然后,我们通过添加两个自定义字段(agebio)来扩展 User 模型。这些新字段将允许我们在用户注册时收集更多信息。

此外,我们还添加了一个名为 get_full_name() 的自定义方法,该方法返回用户的完整名称。

接下来,我们需要在项目的 settings.py 文件中指定我们的自定义用户模型:

python复制代码
AUTH_USER_MODEL = 'myapp.CustomUser'

请注意,myapp 应替换为您的应用程序的名称。

最后,我们需要对现有的数据库模式进行迁移,以便更新用户表结构:

复制代码
python manage.py makemigrations
python manage.py migrate

完成上述步骤后,我们的自定义用户模型就可以在 Django 中使用了。我们可以像访问默认的 User 模型一样访问它,例如:

python复制代码
from myapp.models import CustomUser

# 创建新用户
user = CustomUser.objects.create_user(
    username='johndoe',
    password='secret',
    email='johndoe@example.com',
    first_name='John',
    last_name='Doe',
    age=30,
    bio='Lorem ipsum dolor sit amet, consectetur adipiscing elit.'
)

# 调用自定义方法
full_name = user.get_full_name()
posted @ 2023-05-23 15:14  7dao  阅读(235)  评论(0编辑  收藏  举报