auth模組的 資料遷移的問題 auth.User.groups: (fields.E304)
阿新 • • 發佈:2018-12-20
這內建的認證系統這麼好用,但是auth_user表字段都是固定的那幾個,我在專案中沒法拿來直接使用啊!
比如,我想要加一個儲存使用者手機號的欄位,怎麼辦?
聰明的你可能會想到新建另外一張表然後通過一對一和內建的auth_user表關聯,這樣雖然能滿足要求但是有沒有更好的實現方式呢?
答案是當然有了。
我們可以通過繼承內建的 AbstractUser 類,來定義一個自己的Model類。
這樣既能根據專案需求靈活的設計使用者表,又能使用Django強大的認證系統了。
from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): """ 使用者資訊表 """ nid = models.AutoField(primary_key=True) phone = models.CharField(max_length=11, null=True, unique=True) def __str__(self): return self.username
注意:
按上面的方式擴充套件了內建的auth_user表之後,一定要在settings.py中告訴Django,我現在使用我新定義的UserInfo表來做使用者認證。寫法如下:
# 引用Django自帶的User表,繼承使用時需要設定 AUTH_USER_MODEL = "app名.UserInfo"
再次注意:
一旦我們指定了新的認證系統所使用的表,我們就需要重新在資料庫中建立該表,而不能繼續使用原來預設的auth_user表了。