Django自带用户模型User,可用于认证登录,权限设置,分组设置等功能。但原始的用户模型User不能完全满足我的项目需求。
User模型完全是按照英文体系设计的,有first name,last name用于录入名和姓,username是账号,用于认证的。但我不想使用first name,last name,想直接录入中文姓名。
查找资料后发现Django的User模型可以扩展,在自己的项目app内定义一个User模型,继承AbstractUser即可,再增加自己想要的属性
class User(AbstractUser):
realname = models.CharField(max_length=64, verbose_name="真实姓名", null=True, default=None, blank=False)
history = HistoricalRecords()
def __str__(self):
try:
if self.realname:
return '%s' % (self.realname)
else:
return '%s' % (self.username)
except Exception as err:
ccom_log_error(err)
定义一个realname用于直接存储姓名。
定义完自己的User模型后,系统并不会就使用这个模型,还要在setting.py设置一下,加入如下一条。(tcm是app名字,换成自己的即可)
AUTH_USER_MODEL='tcm.User'
最后别忘了迁移一下数据库