banner
raye~

Raye's Journey

且趁闲身未老,尽放我、些子疏狂。
medium
tg_channel
twitter
github
email
nintendo switch
playstation
steam_profiles

【Djangoバックエンド開発3】バックエンド管理の実装

【Django 後台開發一】環境部署和初始化項目

【Django 後台開發二】模型設計與創建

このセクションでは、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

ユーザー管理以外の他の操作も、この方法で行うことができます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。