高度なadminによるデータ管理


フィードバック機能付き完全なPython/張庫Webサービス開発ガイド課の後で整理した文章を聞き終わった.
  • 章では、基本的なCRUDをサポートするWeb UIを提供します.これをadminと呼び、モデル登録で使用できます.
  • CMS未満で、サービス初期に管理ツールとして使用するのに適しています.
  • 管理ツールを作成する時間を短縮し、エンドユーザーサービスに専念できます.
  • adminにモデル化クラスを登録する

    # app/admin.py
    from django.contrib import admin
    
    from .models import Post  # 등록할 모델 클래스 임포트
    
    
    @admin.register(Post)  # 모델을 등록하는 wrapper함수
    class PostAdmin(admin.ModelAdmin):
        pass

    モデルクラスでstrを実装する


    上記で定義したAdminクラスにlist displayを指定しない場合、デフォルトでは객체.__str__()の戻り値が出力されます.したがって、__str__が定義される.
    # app/models.py
    from django.db import models
    
    
    class Post(models.Model):
        message = models.TextField()
        is_publish = models.BooleanField(default=False)
        created_at = models.DateTimeField(auto_now_add=True)
        updated_at = models.DateTimeField(auto_now=True)
    
        def __str__(self):
            return self.message

    adminの各種属性を定義する

  • list display:モデルリストに出力する列を指定します.
  • list display links:list displayで指定した名前の詳細リンクgirlプロパティリスト
  • にリンク
  • search field:admin内検索UIを介してDBを通過するwhereクエリターゲットフィールドリスト
  • list filter:指定フィールド値によるフィルタオプション
  • を提供する.
    また、message lengthなどの関数を定義し、フィールドとして使用することもできます.リストディスプレイに追加します.message_length.short_descriptionコードを記述して、画面表示の出力を変更することもできます.
    # app/admin.py
    from django.contrib import admin
    
    from .models import Post
    
    
    @admin.register(Post)
    class PostAdmin(admin.ModelAdmin):
        list_display = ['pk', 'message', 'message_length', 'is_publish', 'created_at', 'updated_at']
        list_display_links = ['message']
        search_fields = ['message']
        list_filter = ['is_publish']
    
        def message_length(self, post):
            return len(post.message)
    
        message_length.short_description = "메시지 길이"