前言
Django自带用户认证,但是字段有限,很多时候我们需要对其进行扩展,可以使用以下几种方法:
- 使用代理模型
这种方法不会创建新表,纯粹是行为上的,比如默认排序,自定义管理器或自定义模型方法等等,对于其他的Model若有相同的应用场景,也可以使用这种方法。 - 使用一对一关系表
使用代理模型
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
class MyPerson(Person):
class Meta:
proxy = True
def do_something(self):
# ...
pass
之后操作MyPerson
>>> p = Person.objects.create(first_name="foobar")
>>> MyPerson.objects.get(first_name="foobar")
<MyPerson: foobar>
使用一对一关系表
from django.contrib.auth.models import User
class Employee(models.Model):
user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE)
department = models.CharField(max_length=100)
修改settings.py的配置,增加
AUTH_PROFILE_MODULE = 'djangoadmin.myadmin.UserProfile'