L'interface d'administration n'est pas active par défaut.
from django.contrib import admin admin.autodiscover() url(r'^admin/', include(admin.site.urls)),
Ajouter une application à l'interface d'administration. Permet de dire à l'interface d'administration du projet que nos objets ont une interface d'administration.
from django.contrib import admin //... from monApplication.models import monApplication.monObjet
Utiliser soit la méthode décrite ci-dessus soit en déclarant que l'administration d'un objet est réalisée au travers d'un autre objet. Pour un objet Enfant qui a une relation avec Parent
from django.contrib import admin from polls.models import Enfant, Parent class EnfantInline(admin.StackedInline): model = Enfant extra = 3 class ParentAdmin(admin.ModelAdmin): fieldsets = [ ('Tests', {'fields': ['champ1', 'champ2'], 'classes': ['collapse']}), ] inlines = [EnfantInline] admin.site.register(Poll, PollAdmin)
Utiliser admin.TabularInline pour un affichage en ligne
class MonApplicationAdmin(admin.ModelAdmin): fields = ['maVariable2', 'maVariable1']
admin.site.register(MonApplication, MonApplicationAdmin)
S'appuie sur le verbose name.
Pour les champs de type ForeignKey, ManyToManyField et OneToOneField, le verbose name doit être explicitement déclaré, le premier argument étant réservé au nom de la classe en relation.
class MonApplicationAdmin(admin.ModelAdmin): fieldsets = [ ('NomGroupe 1', {'fields': ['maVariable1', 'maVariable3']}), ('NomGroupe 1 2', {'fields': ['maVariable2']}), ]
class MonApplicationAdmin(admin.ModelAdmin): fieldsets = [ ('NomGroupe 1', {'fields': ['maVariable1', 'maVariable3'], 'classes': ['collapse']}), ('NomGroupe 1 2', {'fields': ['maVariable2']}), ]
collapse est une classe livrée avec Django qui permet de réduire ou étendre un groupe de données.
class MonApplicationAdmin(admin.ModelAdmin): fieldsets = [ ('NomGroupe 1', {'fields': ['maVariable1', 'maVariable3'], 'classes': ['collapse']}), ('NomGroupe 1 2', {'fields': ['maVariable2']}), ] list_display = ('maVariable1', 'maVariable2', 'maVariable3')
Les méthodes de la classe peuvent également être utilisée. Dans ce cas, le tri sur la colonne correspondante n'est pas possible. Exemple avec une méthode vraiOuFaux() :
class MonApplicationAdmin(admin.ModelAdmin): fieldsets = [ ('NomGroupe 1', {'fields': ['maVariable1', 'maVariable3'], 'classes': ['collapse']}), ('NomGroupe 1 2', {'fields': ['maVariable2']}), ] list_display = ('maVariable1', 'maVariable2', 'maVariable3', 'vraiOuFaux')
Voir également comment personnaliser l'affichage d'une méthode
list_filter = ['monChampDeFiltrage1','monChampDeFiltrage2']
search_fields = ['monChamp1', 'monChamp2']
Utilise sql LIKE. La raison est donc de mise pour éviter les problèmes de performance.
Il faut évidemment disposer d'une variable de type DateTimeField
date_hierarchy = 'maVariableDate'