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
的子类。然后,我们通过添加两个自定义字段(age
和 bio
)来扩展 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()