扩展用户模型的第一个要求:您必须从一个未调用的干净 django 项目开始:“python manage.py migrate”命令。
这是因为如果您过去确实迁移过,则未扩展的用户模型已经创建,django 不知道如何更改它。
现在,要选择另一个用户模型,您要做的第一件事就是在 settings.py 中:
AUTH_USER_MODEL = 'APPNAME.Account'
建议创建一个新的应用程序来处理用户模型。请注意不要将应用称为“帐户”,因为它会与现有的用户模型发生冲突。
我创建了一个名为 accountb 的应用程序。在模型上:
from django.db import models
from django.contrib.auth.models import UserManager
from django.contrib.auth.models import AbstractUser
class AccountManager(UserManager):
def create_user(self, email, password=None, **kwargs):
if not email:
raise ValueError('Users must have a valid email address.')
if not kwargs.get('username'):
raise ValueError('Users must have a valid username.')
account = self.model(
email=self.normalize_email(email),
username=kwargs.get('username'),
year_of_birth = kwargs.get('year_of_birth'),
#MODEL = kwargs.get('MODEL_NAME'),
)
account.set_password(password)
account.save()
return account
def create_superuser(self, email, password, **kwargs):
account = self.create_user(email, password, **kwargs)
account.is_staff = True
account.is_superuser = True
account.save()
return account
class Account(AbstractUser):
email = models.EmailField(unique=True)
#ADD YOUR MODELS HERE
objects = AccountManager()
def __str__(self):
return self.email
另外,别忘了在 admin.py 上注册:
from django.contrib import admin
from .models import Account
admin.site.register(Account)