このセクションでは、Django のバックエンドシステムを再利用して、ユーザー管理を実現する方法について説明します。
まず、バックエンドシステムを中国語に変更し、名前も自分自身のものに変更する必要があります(自分自身が開発したと仮定します)。
./easy_talk_backend/study/admin.py
で次のように変更します。
admin.site.site_header = 'xxxバックエンドシステム'
また、プロジェクトの./easy_talk_backend/settings.py
で言語を中国語に変更します。
LANGUAGE_CODE = 'zh-Hans'
次に、学習コンテンツの管理を実装します。admin.py
で前のセクションで作成したモデルをインポートします。
from .models import StudyContent, PushStrategy, SchoolClass, Student, Checkin
バックエンドに登録します。
@admin.register(StudyContent)
class StudyContentAdmin(admin.ModelAdmin):
pass
これでバックエンドでStudyContent
を管理できるようになりましたが、見た目が非常にシンプルですので、カスタマイズが必要です。
表示する属性の決定: list_display
検索対象の属性: search_fields
フィルタリングフィールド: list_filter
元の削除を無効にし、新しいオンライン操作を追加する: actions
最初の 3 つは簡単です。コードは次のようになります。
@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
ユーザー管理以外の他の操作も、この方法で行うことができます。