前言
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'