Looking for django-admin Answers? Try Ask4KnowledgeBase
Looking for django-admin Keywords? Try Ask4Keywords

django-admindjango-adminを使い始める


備考

Django Adminは、 Django WebフレームワークのCRUDインタフェースです。ほとんどの場合、自動的に生成されますが、広くカスタマイズすることができます。ただし、 信頼できるユーザー向けに設計さており、制限があることに注意する必要があります。いずれにしても、 信頼できないユーザーには管理者権限を与えることは絶対にしてはいけませ

Django Adminは高度なカスタマイズを提供しますが、あまりにも多くのカスタマイズの細部を落とさないように注意してください。もしそうなら、おそらくDjango Adminを使わずに独自のカスタムインターフェースを作成する時が来ます。

リソース

バージョン

バージョン発売日
1.10 2106-08-01
1.9 2015-12-01
1.8 2015-04-01
1.7 2014-09-02
1.6 2013-11-06
1.5 2013-02-26
1.4 2012-03-23
1.3 2011-03-23
1.2 2010-05-17
1.1 2009年7月29日
1.0 2008-09-03

Django管理者の設定

Django adminを使い始めるために必要なものはすべて、Djangoのデフォルトのプロジェクトレイアウトで既に設定されています。これも:

# settings.py

# `django.contrib.admin` and its dependancies.
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    ...,
]

MIDDLEWARE = [
    ...
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    ...
]

TEMPLATES = [
    {
        ...,
        'OPTIONS': {
            'context_processors': [
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                ...
            ],
        },
    },
]
 

Django> = 1.9で若干異なるurls.py については、古いバージョンよりも注意が必要です。

1.9
from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]
 
1.9
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
]
 

include 付きのバージョンはDjango 1.9でも動作しinclude が、将来廃止され、今後削除される予定です。

まだ実行されていない場合は、基本移行を適用する必要があります。

$ python manage.py migrate
 

管理者にアクセスするには、スーパーユーザーを作成する必要があります。

$ python manage.py createsuperuser
 

これが完了したら、サーバーを実行できます:

$ python manage.py runserver
 

管理ページ( http://127.0.0.1:8000/admin/)にアクセスしてください。

管理ページにモデルを追加する

アプリで独自のモデルを作成した場合でも、管理ページで利用できるようにするには、 登録する必要があります。

これはadmin サブモジュールで行われます。あなたのアプリがmanage.py startapp を使って作成された場合、 admin.py ファイルは既にあなたのappモジュールに置かれているはずです。それ以外の場合は作成します。

#myapp/admin.py
from django.contrib import admin
from myproject.myapp.models import MyModel

admin.site.register(MyModel)
 

すべてのオプションは、ModelAdminサブクラスで定義されています。いくつかのオプション:

class MyCustomAdmin(admin.ModelAdmin):
    list_display = ('name','age','email')  # fields to display in the listing
    empty_value_display = '-empty-'        # display value when empty 
    list_filter = ('name', 'company')      # enable results filtering
    list_per_page = 25                     # number of items per page 
    ordering = ['-pub_date', 'name']       # Default results ordering

# and register it 
admin.site.register(MyModel, MyCustomAdmin)
 

モデルを登録するより簡潔な方法は、 admin.register デコレータを使用することadmin.register

@admin.register(MyModel)
class MyCustomAdmin(admin.ModelAdmin)
    ...
 

djangoユーザ管理モデルをカスタマイズする

from django.contrib.auth.models import User    
class UserAdmin(admin.ModelAdmin):
    list_display = ('email', 'first_name', 'last_name')
    list_filter = ('is_staff', 'is_superuser')
    
admin.site.unregister(User) 
admin.site.register(User, UserAdmin)
 

django User Model Adminが既に登録されているので、カスタムUserAdminを登録する前に登録を解除する必要があります。まずadmin.pyでUser Modelの登録を解除してから、User ModelをカスタムModelAdminに登録する必要があります

管理ページからモデルを削除する

Django Adminにはデフォルトでいくつかのモデルが登録されています。管理ページからモデルを削除したい場合があります。

これはadmin サブモジュールで行われます。あなたのアプリがmanage.py startapp を使って作成されたものであれば、 admin.py ファイルは既にあなたのアプリケーションモジュールに置かれているはずです。それ以外の場合は作成します。

#myapp/admin.py
from django.contrib import admin
from django.contrib.auth.models import User

admin.site.unregister(User)