1. 程式人生 > >Django自定義使用者表+自定義admin後臺中的欄位

Django自定義使用者表+自定義admin後臺中的欄位

1.自定義使用者表 注意事項
必須在settings中配置AUTH_USER_MODEL這個欄位

   # 覆蓋預設的使用者模型,使用自定義使用者模型
   # 語 法:'app的名稱.自定義使用者模型的名稱'
   AUTH_USER_MODEL = 'admi.UserModel'

2.在models檔案中編寫UserModel類

from django.db import models
from django.contrib.auth.models import AbstractUser
# Django框架將createsuperuser建立的使用者以及在amdin後臺新增的使用者,預設都儲存在了auth_user這個表中,但是這個表的欄位是固定的,如果想給使用者擴充套件一些欄位(年齡、性別、住址等),就需要重寫User表了,不能再使用auth_user這個表了。

class UserModel(AbstractUser):
        #  AbstractUser這個類,也就是Django框架預設使用的一個用於管理使用者的User類,這個類生成一個auth_user表。所以,要擴充套件使用者屬性,可以繼承AbstractUser,在子類UserModel中實現擴充套件。   
        nick_name=models.CharField(max_length=25,verbose_name='暱稱')
        user_address=models.CharField(max_length=35,verbose_name='住址')

        class Meta:
        	# 配置自定義使用者表名是user_table
            db_table='user_table'
            verbose_name='使用者'
            verbose_name_plural=verbose_name

新增完成後,在當前app的admin檔案中註冊

# 只要使用admin後臺系統,所有的Model必須在這裡進行註冊
admin.site.register(UserModel)

3.測試

編寫完上述步驟後,makemigrations、migrate同步資料庫
在這裡插入圖片描述
然後開啟使用者的資料庫管理工具,可以看到user_table這個表已經生成了,而且表中生成了我們建立的兩個欄位
nick_name和user_address
在這裡插入圖片描述
在這裡插入圖片描述

4.進入admin後臺測試
先使用createsuper建立一個superuser使用者
通過admin登入到後臺在這裡插入圖片描述

在這裡插入圖片描述
後臺自動生成了一個欄位代表使用者名稱,我們把UserModel中Meat下verbose_name=‘使用者’ 修改成使用者名稱,然後重新整理admin頁面,admin中的欄位也會隨之改變。
(這樣也不需要更新資料庫,是不是很方便呢?)
在這裡插入圖片描述


在這裡插入圖片描述

5.後臺欄位擴充套件

a.更改使用者名稱顯示的內容(只顯示admin是不是很單調?)
在UserModel中使用__str__魔法方法
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20181109214223223.png
具體效果
在這裡插入圖片描述

b.讓後臺資訊顯示多個欄位

   # 修改app下的admin.py檔案
    from django.contrib import admin
    from .models import *
    class UserAdmin(admin.ModelAdmin):
        # 設定顯示資料庫中哪些欄位
        list_display = ['username','password','nick_name','user_address']
        
    admin.site.register(UserModel,UserAdmin)

效果
在這裡插入圖片描述