FAQ : l’interface d’administration

Je ne peux pas me connecter. Lorsque je saisis un nom d’utilisateur et un mot de passe valides, cela me renvoie toujours vers la même page de connexion, sans aucun message d’erreur.

Le cookie de connexion n’est pas défini correctement car le domaine du cookie envoyé par Django ne correspond pas au domaine du navigateur. Essayez de définir le réglage SESSION_COOKIE_DOMAIN de sorte que le domaine corresponde à votre domaine. Par exemple, si vous utilisez l’adresse « https://www.example.com/admin/ » dans votre navigateur, définissez SESSION_COOKIE_DOMAIN = 'www.example.com'.

Je n’arrive pas à me connecter. Quand je saisis un couple nom d’utilisateur/mot de passe valide, j’obtiens à nouveau la page de connexion avec l’erreur : « Saisissez un nom d’utilisateur et un mot de passe valides ».

Si vous êtes certain que votre nom d’utilisateur et votre mot de passe sont corrects, assurez-vous que les attributs is_active et is_staff de votre compte sont définis à True. Le site d’administration permet uniquement l’accès aux utilisateurs qui ont ces deux champs définis à True.

Comment automatiquement définir la valeur d’un champ avec l’utilisateur qui a mis à jour l’objet en dernier dans l’interface d’administration ?

La classe ModelAdmin offre des points d’extension vous permettant de transformer un objet lorsqu’il est enregistré, à partir des informations de la requête. En récupérant l’utilisateur actuel de la requête et en étendant la méthode save_model(), vous pouvez mettre à jour un objet pour qu’il contienne l’utilisateur qui l’a modifié. Voir la documentation de ModelAdmin pour un exemple.

Comment limiter l’accès à l’interface d’administration afin que les objets ne puissent être modifiés que par leur créateur ?

La classe ModelAdmin offre aussi des points d’extension permettant de contrôler la visibilité et la capacité d’édition des objets de l’interface d’administration. En utilisant la même astuce que pour l’extraction de l’utilisateur depuis une requête, get_queryset() et has_change_permission() peuvent être utilisés pour contrôler la visibilité et la capacité d’édition des objets dans l’interface d’administration.

Le CSS et les images de mon site d’administration s’affichent parfaitement avec le serveur de développement, mais plus quand j’utilise mod_wsgi.

Consultez service des fichiers de l’administration dans la documentation « Comment utiliser Django avec mod_wsgi ».

Mon « list_filter » contient un champ ManyToManyField, mais le filtre ne s’affiche pas.

Django ne se fatigue pas à afficher le résultat d’un filtre ManyToManyField s’il ne contient pas plus d’un élément lié.

Par exemple, si votre list_filter inclut sites et qu’il n’y a qu’un seul site dans votre base de données, il n’affichera par le filtre « Site ». Dans ce cas, le filtrage par site est inutile.

Certains objets n’apparaissent pas dans l’interface d’administration.

L’incohérence du nombre de lignes peut être causée par l’absence de valeurs de clé étrangère ou par un champ de clé étrangère incorrectement défini avec null=False. Si vous avez un enregistrement avec une ForeignKey pointant sur un objet inexistant et que cette clé étrangère est incluse dans list_display, l’enregistrement ne sera pas affiché dans la liste des objets de l’administration parce que le modèle Django déclare une contrainte d’intégrité non implémentée au niveau de la base de données.

Comment puis-je personnaliser les fonctionnalités de l’interface d’administration ?

Vous avez plusieurs options. Si vous souhaitez vous greffer au-dessus d’un formulaire d’ajout/édition généré automatiquement par Django, vous pouvez attacher n’importe quel module JavaScript à la page via le paramètre js de la classe Admin du modèle. Ce paramètre est une liste d’URL, de type chaîne de caractères, pointant sur les modules JavaScript qui seront inclus dans le formulaire d’administration via une balise <script>.

Si vous souhaitez plus de flexibilité qu’un simple ajustement des formulaires auto-générés, vous êtes libre d’écrire des vues personnalisées pour l’administration. L’interface d’administration est elle-même basée sur Django et vous pouvez écrire des vues personnalisées qui se branchent sur le système d’authentification, vérifient les permissions et font tout ce qu’elles ont besoin de faire.

Si vous souhaitez modifier l’aspect de l’interface d’administration, lisez la question suivante.

Le site d’administration généré dynamiquement ne me plaît pas. Comment puis-je le modifier ?

De notre côté, nous l’apprécions, mais si ce n’est pas votre cas, vous pouvez modifier la présentation du site d’administration en éditant la feuille de style CSS ou les images associées. Le site est construit en utilisant du HTML sémantique et beaucoup de points d’ancrage CSS de sorte que tout changement que vous souhaitez apporter devrait être possible en modifiant la feuille de style.

Quels sont les navigateurs pris en charge par le site d’administration ?

Le site d’administration offre une expérience fonctionnelle complète pour les navigateurs de niveau A de YUI, à l’exception notable de IE6 qui n’est plus pris en charge.

Des différences stylistiques mineures peuvent surgir entre les navigateurs pris en charge — par exemple, certains navigateurs ne gèrent pas les coins arrondis. Celles-ci sont considérées comme des variations acceptables en terme de rendu.

Back to Top