跬步 On Coding

Django自定义User类

参考

Substituting a custom User model
django(v1.5) 自定义用户基础

实现

Django forum,学习Django了,准备写一个论坛,想法是实现一个如 http://f2e.im/ 这样的现代论坛,数据驱动开发,第一步就是设计数据库表结构,Django自带了用户模块,但是定义的字段太少,所以需要自定义扩展下。

settings.py下新增自定义用户类:

AUTH_USER_MODEL = 'myapp.MyUser'

然后在app目录的models.py下新增:

from django.contrib.auth.models import AbstractBaseUser, AbstractUser

def MyUser(AbstractUser):
    nickname = models.CharField(max_length=30)
    ...

AbstractUser类与from django.contrib.auth.models.User的属性是一致的,username, first_name, last_name, email, password, is_staff, is_active, is_superuser, last_login date_joined, 所以除了已有的这些属性其余的就自由扩展了。

如果AbstractUser还不能满足的话,就自己派生AbstractBaseUser这个基础类,这个类需要写的更多,要实现一些方法,还有表单类需要重写,这些就不展开了,参考来写即可。