Django擴展默認的User模型

前言

Django自帶用戶認證,但是字段有限,很多時候我們需要對其進行擴展,可以使用以下幾種方法:

  1. 使用代理模型
    這種方法不會創建新表,純粹是行爲上的,比如默認排序,自定義管理器或自定義模型方法等等,對於其他的Model若有相同的應用場景,也可以使用這種方法。
  2. 使用一對一關係表

使用代理模型

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'

參考

官方文檔(Proxy Models)
官方文檔(Extending the existing User model)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章