這一節來講講怎麼復用 Django 後臺系統,來實現用戶的管理
首先還是要將後臺系統改為中文,同時名字也要修改為我們自己的(假裝是自己開發的)
在 ./easy_talk_backend/study/admin.py
中修改
admin.site.site_header = 'xxx後臺系統'
同時在項目的 ./easy_talk_backend/settings.py
中修改語言為中文
LANGUAGE_CODE = 'zh-Hans'
然後我們來實現學習內容的管理,在 admin.py
中導入我們上一節創建的 model
from .models import StudyContent, PushStrategy, SchoolClass, Student, Checkin
註冊到後臺
@admin.register(StudyContent)
class StudyContentAdmin(admin.ModelAdmin):
pass
此時後臺就可以管理這個 StudyContent
,但是太過簡陋了,我們需要自定義下
決定要展示的屬性 : list_display
支持搜索的屬性: search_fields
過濾字段: list_filter
禁用原來的刪除,增加新的上線操作: actions
前三個還挺簡單的,代碼如下:
@admin.register(StudyContent)
class StudyContentAdmin(admin.ModelAdmin):
list_display = ('title', 'brief', 'url', 'is_online')
search_fields = ('title', 'url')
actions = ['mark_as_online']
list_filter = ('is_online',)
pass
mark_as_online
是我們自定義的操作,也就是說這個操作需要更新 is_online
的屬性
def mark_as_online(self, request, queryset):
queryset.update(is_online=True)
self.message_user(request, '所選學習內容已成功標記為上線')
mark_as_online.short_description = '標記所選學習內容為上線'
禁用刪除操作
def get_actions(self, request):
actions = super().get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions
最後就實現好了~,代碼如下:
@admin.register(StudyContent)
class StudyContentAdmin(admin.ModelAdmin):
list_display = ('title', 'brief', 'url', 'is_online')
search_fields = ('title', 'url')
actions = ['mark_as_online']
list_filter = ('is_online',)
def mark_as_online(self, request, queryset):
queryset.update(is_online=True)
self.message_user(request, '所選學習內容已成功標記為上線')
mark_as_online.short_description = '標記所選學習內容為上線'
def get_queryset(self, request):
return super().get_queryset(request)
def get_actions(self, request):
actions = super().get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions
其餘的除了用戶管理外,都可以按照此種方式進行