Django Admin Templateの使い方を解説していく

スポンサーリンク

この記事では、管理サイトのインタフェースと、Django の admin テンプレートを使ってそれをどのように変更できるかについて学びます。

スポンサーリンク

Django デフォルトの管理画面

Django のデフォルトの管理サイトは、以下のようなものです。

class SampleBookModel(models.Model):
    Name = models.CharField(max_length = 80)
    Price = models.IntegerField()
    Genre = models.CharField(max_length = 80)
    Description = models.TextField()

デフォルトのインタフェースは最小限の機能しかなく、ユーザフレンドリではあり ません。

しかし、 Django は独自の管理サイトインタフェースを作る方法を提供しています; それは Django ModelAdmin ライブラリを使うことです。

これから ModelAdmin を使って、どのように私たちのニーズに応じて管理ページを変更できるかを見てみましょう。

ModelAdmin ライブラリで Django の Admin インターフェイスをカスタマイズする

Model Admin を使うには、作業するためのいくつかのモデルテーブルが必要です。

そこで、簡単なモデルを紹介します。

from django.contrib import admin

この後の節では、このモデルの表示ページそのものを変更します。

Model Admin クラスの編集

モデル Admin は Django の admin ライブラリの一部です。

これを使うには、 admin をインポートする必要があります。

#Decorator
@admin.register(BookModel)
class BookModelAdmin(admin.ModelAdmin):
    #Fields
    fields =('<model_field_names>')
  
    #List Display
    list_display = ('<model_field_names>')
  
    #List_filter
    list_filter = ('<model_field_names>')
  
    #ordering
    ordering = ('<model_field_names>')
  
    #fieldsets
    fieldsets =(
                ('Required information',{
                    'description' : '<'description_sentence>',
                    'fields':('<model_fields'>)
                }),
                ('Optional Information',{
                    'classes' : ('<class_options',),
                    'fields': ('<model_fields>')
                })
        )

モデル Admin クラスの基本的な構文は以下の通りです。

@admin.register(<Model_Name>)

では、個別に見ていきましょう

1. デコレーター

Pythonは既存のコードに機能を追加するために使用される、エキサイティングな機能デコレータを提供します。

これは@記号と一緒に使います。

これについては、Pythonのデコレータの記事で詳しく説明されています。

管理サイトのレジストリデコレータの基本的な構文は以下のとおりです。

admin.site.register(<Model_Name>, <Model_admin_class>)

注意: ここでの機能は、この行のものと同じです。

fields =(('field1','field2'),'field3','field4')

デコレータを使うのは、モデルを管理サイトに登録するためのもうひとつの方法です。

この場合、唯一の違いは、モデルとともにモデル管理クラスを引数として追加することです。

2. フィールド

フィールドは、ウェブページ上のモデルフィールドの順序と位置を指定します。


注:Input(fields)はタプルで指定する必要があります。

list_display = ('<Heading1','Heading2')

2つのフィールドを同じレベルに表示するには、タプルの中にタプルとして追加します。

例えば 上記のコードでは フィールド1とフィールド2は同じレベルに表示され、フィールド3はその下に、フィールド4は最後に表示されます。

3. list_display

list_filter = ('<filter-by:Field_Name>',)

上の例では、Webページには “Book Model “という見出しが1つだけ表示されています。

このように、より多くの列見出しを追加するには、list_display 属性を使用します。

注:入力(Column Headings)はタプルとして与えられるべきです。

list_displayのシンタックス。

ordering = ('<Field_Name>',)

4. List Filter

DefaultインターフェイスはFilter-byオプションを提供しない。

しかし、 list_filter オプションを使って追加することができます

Filter_byオプションを使用すると、Table要素をより速く検索することができます

注:Inputはタプルで指定すること。

fieldsets =(
            ('Required information',{
                'description' : '<'description_to_display>',
                'fields':('<Field_Names'>)
            }),
            ('Optional Information',{
                'classes' : ('<display_options>',),
                'fields': ('<Field_Names>')
            })
    )

5. オーダリング

ordering属性は、Table要素がウェブページに表示される順序を指定します。

注:入力はタプルとして与えられるべきです。

@admin.register(SampleBookModel)
class SampleAdminModel(admin.ModelAdmin):
    fieldsets =(
            ('Required information',{
                'description' : 'These fields are compulsory',
                'fields':(('Name','Price'),'Genre')
            }),
            ('Optional Information',{
                'classes' : ('collapse',),
                'fields': ('Description',)
            })
    )
    list_display =('Name','Price')
    list_filter = ('Genre',)
    ordering =('Name',)

6. fieldsets

fieldsets属性は、fields属性と同じように、フィールドを表示する別の方法です。

多くのウェブサイトでは、情報はしばしばオプションの情報タグの下に表示され、”Click to View “オプションを押した後に見ることができます。

fieldsetsはまさにそれを実現するものです! 構文はタプルの中のPythonの辞書に似ています。

fieldsetsのシンタックスは以下の通りです。

Admin Site
Admin Site

以下は、あまり使われない Model Admin のアトリビュートです。

  • empty_value_display
  • exclude
  • list_editable
  • readonly_fields

Admin クラスを使った Django Admin テンプレートのフィールドのカスタマイジング

変数についての理解が深まったので、次は Admin Template 上のフロントエンドフィールドの変更に移りましょう。

前提条件のセクションで説明した SampleModel Django Admin Template の外観を変更します。

admins.py にコードを追加します。

Books
Books

このコードから、各要素がどこに表示されるかを推測してください。

あなたの推測が正しいかどうかは、次のセクションで見てみましょう。

Model Admin クラスの実装

正しく推測できましたか?出力結果を見てみましょう。

Admin Interface
Admin Interface
Admin Template
Admin Template
Admin TemplateOptional Information
Admin Template (Optional Information)

まとめ

コーダーの皆さん、以上です! 以上、Django Admin Templates と Model Admin クラスの使い方についてでした。

管理サイトについての詳細は、 Django Admin Site の記事を参照してください。

次の記事でお会いしましょう! Keep Coding !

タイトルとURLをコピーしました