Django adminによるデータ管理


授業内容を整理する


コース名:フィードバック機能付きPython/張高Webサービス開発完全ガイド
講座:高度なadminによるデータ管理

django admin


django.contrib.adminアプリケーションで提供
  • 故障経路:/admin/
  • またはdjango-admin-honeypotアプリケーションが偽のadminページを暴露
  • 同じ機能を提供ただし、このメソッドを使用するとadminは別のパスに変更され、/admin/はhoneypotにマッピングされます.このアプリはログインする人のIPを記録します.
  • モデルクラスの登録によるWeb UIの照会/追加/変更/削除
  • サービス初期にデータベース管理ツールとして使用する
  • 管理ツールの作成時間を短縮し、エンドユーザーサービスに専念する
  • 内部でdjango formを積極的に使用する
    モデルを作成してもadminで使うためには別途登録が必要!!

    AdminでModel Classを登録する方法


    モデル登録は1回のみ
    再登録するには、登録したモデルをログアウトする必要があります.

    登録法#1

    admin.site.register(Item) #기본 ModelAdmin으로 동작
    アプリケーションディレクトリのadminは、次のようになります.pyファイルに入力して保存します.

    下図のように/instagram(登録されているアプリケーションURL)に移動すると、モデルは表示されません

    登録法#2

    class ItemAdmin(admin.ModelAdmin):
    	pass
    admin.site.register(Item,ItemAdmin) #지정한 ModelAdmin으로 동작

    登録法#3

    @admin.register(Item)
    class ItemAdmin(admin.ModelAdmin):
    	pass

    /str表現


    場合によっては、PythonはJAVAのtoStringのようにオブジェクトを文字列として表す必要がある場合があります.
    # Create your models here.
    class Post(models.Model):
        message = models.TextField()
        created_at = models.DateTimeField(auto_now_add=True)
        updated_at = models.DateTimeField(auto_now=True)
    		
    		#아래처럼 작성
        def __str__(self):
            return f"Post object ({self.id})" #이 부분은 custom 가능
    Postを作成した場合の名前は

    list display表現


    表示する列を指定できます
    リストディスプレイをプライマリ・キーとして指定すると、次のようになります.
    @admin.register(Post)
    class PostAdmin(admin.ModelAdmin):
        list_display = ['pk'] #pk는 primary key에 대한 별칭
    以下に示す(プライマリキーidは1であるため1)

    より明示的に表示する列を指定した場合の結果
    @admin.register(Post)
    class PostAdmin(admin.ModelAdmin):
        list_display = ['id','message','created_at','updated_at'] #pk는 primary key에 대한 별칭

    list_display_links


    List display指定名で詳細にリンクするプロパティリスト
    @admin.register(Post)
    class PostAdmin(admin.ModelAdmin):
        list_display = ['id','message','created_at','updated_at'] #pk는 primary key에 대한 별칭 
        list_display_links=['messages']

    メンバー機能の追加(models.py)


    #instagram/admin.py
    
    @admin.register(Post)
    class PostAdmin(admin.ModelAdmin):
        list_display = ['id','message','message_length','created_at','updated_at'] #pk는 primary key에 대한 별칭 
        list_display_links=['messages']

    メンバー関数列名の変更




    メンバーFunctionの追加(admin.pyから)



    Search Fieldsプロパティの定義


    adminの検索UIを通じて、DBを通じてどこでターゲットフィールドのリストを検索します


    list filterプロパティの定義


    指定したフィールド値によるフィルタオプションの提供