首先要求扩展用户模型:你必须从一个干净的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)
它不Django的1.5和1.8,以便联答案之间的变化并不过时。 – GwynBleidD