Premiers pas avec django-admin
Supprimer un modèle des pages d’administration
Django Admin est livré avec certains modèles enregistrés par défaut. Il peut arriver que vous souhaitiez supprimer un modèle des pages d’administration.
Cela se fait dans le sous-module admin
. Si votre application a été créée à l’aide de manage.py startapp
, le fichier admin.py
devrait déjà se trouver dans votre module d’application. Sinon créez-le.
#myapp/admin.py
from django.contrib import admin
from django.contrib.auth.models import User
admin.site.unregister(User)
Configurer Django Admin
Tout ce dont vous avez besoin pour démarrer avec Django admin est déjà configuré dans la disposition de projet par défaut de Django. Ceci comprend:
# 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',
...
],
},
},
]
Faites attention à urls.py
qui est légèrement différent dans Django >= 1.9 que dans les anciennes versions.
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
]
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
]
La version avec include
fonctionnera toujours dans Django 1.9 mais est obsolète et sera supprimée à l’avenir.
Si ce n’est déjà fait, vous devez appliquer les migrations de base :
$ python manage.py migrate
Pour accéder à l’admin, il faut aussi créer un superuser avec :
$ python manage.py createsuperuser
Une fois cela fait, vous pouvez exécuter votre serveur :
$ python manage.py runserver
Et visitez la page d’administration à http://127.0.0.1:8000/admin/
## Ajouter un modèle aux pages d’administration
Lorsque vous créez vos propres modèles dans une application, ils doivent toujours être enregistrés pour être disponibles dans les pages d’administration.
Cela se fait dans le sous-module admin
. Si votre application a été créée à l’aide de manage.py startapp
, un fichier admin.py
devrait déjà se trouver dans votre module d’application. Sinon créez-le.
#myapp/admin.py
from django.contrib import admin
from myproject.myapp.models import MyModel
admin.site.register(MyModel)
Toutes les options sont définies sur la sous-classe ModelAdmin. quelques possibilités :
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)
Une façon plus concise d’enregistrer un modèle consiste à utiliser le décorateur admin.register
:
@admin.register(MyModel)
class MyCustomAdmin(admin.ModelAdmin)
...
Personnaliser le modèle d’administrateur utilisateur 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)
Nous devons nous désinscrire avant d’enregistrer UserAdmin personnalisé car dans Django User Model Admin déjà enregistré, nous devons donc d’abord désinscrire User Model dans notre admin.py, puis nous pouvons enregistrer User Model avec Custom ModelAdmin