> Modules non standards > Django pour le développement web > Interface administration
Interface administration
Pour créer un utilisateur qui pourra accéder au site d'administration : manage.py createsuperuser (permet la création en interactif).
Interface d'administration :
- par défaut, son adresse est : http://localhost:8000/admin (sinon, adapter le port s'il a été changé).
- pour qu'une classe MyModel d'une application myApp soit visible dans l'interface d'administration, il faut la rajouter dans le fichier admin.py de myApp : from .models import MyModel; admin.site.register(MyModel).
Adaptations de l'interface :
- on peut changer l'ordre des champs dans l'interface d'administration en définissant une nouvelle classe dans admin.py :
class MyNewModel(admin.ModelAdmin):
fields = ['field2', 'field1', 'field3']
admin.site.register(MyModel, MyNewModel)
(on suppose ici que les champs de MyModel s'appelaient field1, field2, field3.
- on peut grouper les champs en sets, avec certains sets collapsés par défaut, car rarement utilisés :
class MyNewModel(admin.ModelAdmin):
fieldsets = [(None, {'fields': ['field1', 'field2']}),
('champs optionnels', {'fields': ['field3', 'field4'], 'classes': ['collapse']})]
admin.site.register(MyModel, MyNewModel)
- on peut rajouter à une classe mère la possibilité de rajouter des objets de la classe fille (i.e. ayant une clef étrangère vers la mère) directement dans le formulaire :
class ChoiceInline(admin.StackedInline):
model = ClasseFille
extra = 3 # nombre de sous-formulaires par défaut
class ClassMereNew(admin.ModelAdmin):
inlines = [ChoiceInline]
admin.site.register(ClasseMere, ClasseMereNew)
utiliser admin.TabularInline à la place de admin.StackedInline si on veut une préentation sous la forme tableau pour les champs de classe fille.
- on peut afficher la liste des objets avec certains de leurs champs plutôt que le nom issu de __str__ par :
class MyNewModel(admin.ModelAdmin):
list_display = ('field1', 'field2')
- on peut ainsi afficher aussi un champ qui est le résultat d'un calcul en mettant dans list_display le nom de la méthode.
- on peut rajouter l'affichage d'un filtre dans la vue liste :
class MyNewModel(admin.ModelAdmin):
list_filter = ['field1']
- on peut rajouter un champ de recherche sur certaines colonnes (fait un like) :
class MyNewModel(admin.ModelAdmin):
search_fields = ['field1', 'field2']
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert