我擴展了Django用戶模型,如dev文檔中所描述的那樣。我不想保留大多數原始的用戶模型特性,所以我擴展了抽象用戶類。我在setings.py中定義了:
AUTH_USER_MODEL = 'user.User'
我的用戶類:
class User(AbstractUser):
custom_field = models.ForeignKey('OtherModel')
objects = UserManager()
一切看起來都很好,但是當我試圖讓它由管理站點管理時:
admin.site.register(User, UserAdmin)
我在ADMIN CustomUser Creation頁面(在驗證密碼確認表單后)獲得此錯誤:
AttributeError: Manager isn't available; User has been swapped for 'user.User'
關鍵是,我需要管理站點管理這個模型,以便與原始用戶模型具有相同的創建過程(兩個步驟進程,密碼驗證)。
分析:因為我們定義抽象模型類,並且在settings中設置了
# django認證系統使用的模型類
AUTH_USER_MODEL='user.User'
解決方法(將views中導入模塊的方式修改)
from django.contrib.auth.models import User
然后將其替換為:
from user.models import MyUser as User