Django 繼承原生user表遇到的問題處理

2022-07-24 09:24:08 字數 1856 閱讀 1176

1. 繼承user表設定

# models.py檔案

from django.contrib.auth.models import abstractuser

class user(abstractuser):

mobile = models.charfield(max_length=11)

class meta:

db_table = 'new_user'

verbose_name = '使用者'

verbose_name_plural = verbose_name

def __str__(self):

return self.username

# settings.py配置

# admin.py註冊

from django.contrib import admin

from . import models

admin.site.register(models.user)

2. 在繼承user表後,在後台管理頁面輸入的密碼變成明文,且存入資料庫中的密碼也是明文,導致密碼校驗錯誤
# admin.py檔案中

from django.contrib import admin

from django.contrib.auth.admin import useradmin

from . import models

admin.site.register(models.user,useradmin)

# 這樣設定後,後台管理頁面新增使用者密碼就變成明文輸入了,但是又出現問題2:不能新增自定義的字段

3. 在繼承的同時增加了字段,如mobile欄位。在後台管理頁面新增使用者時,沒有新增該字段的地方
from django.contrib import admin

from django.contrib.auth.admin import useradmin

from . import models

class myuseradmin(useradmin):

# 修改頁面顯示所有字段

fieldsets = ()

# 增加頁面顯示**mobile

add_fieldsets = (

(none,),

)# 格式化使用者首頁列表資訊

list_display = ('username','email','is_staff','mobile')

admin.site.register(models.user,myuseradmin)

這樣在繼承原生user表的同時,就能在後台管理頁面新增字段,並且密碼密文顯示啦

4. 因此如果涉及到修改使用者表,一定要保證使用者表的migration編號是0001_,否則會有依賴性問題。像上面修改了使用者表,下次想要使用原生的user表就只能:

1)刪除資料庫,清除資料夾中的migrations資料夾

資料夾路徑:

python3/lib/sit-packages/django/contrib/admin/migrations

python3/lib/sit-packages/django/contrib/auth/migrations

中的檔案刪除(除了__init__.py檔案)

2)再執行 python manage.py makemigrations 和 python manage.py migrate 操作即可成功。

Django 繼承原生user表遇到的問題處理

models.py檔案 from django.contrib.auth.models import abstractuser class user abstractuser mobile models.charfield max length 11 class meta db table new ...

django繼承User表導致的問題

擴充套件預設的auth user表參考 django繼承修改 user表時,python manage.py makemigrations進行python manage.py migrate操作時會導致的問題如圖 根源 django文件中有註明 因此如果涉及到修改使用者表,一定要保證使用者表的mig...

Django拓展User使用者表

新增乙個字段 wechat models.charfield verbose name blank true null true max length 32 def str self return self.username 將model註冊到admin login admin.py from dj...