10
votes

Alter Django Admin Modifier la liste Titre Titre Texte

Je crée des vues personnalisées pour l'interface administrative Django qui utilise la liste de modifications standard comme une étape provisoire. Cela fonctionne bien, à part le fait que la page de liste de changement H1 est "Sélectionner un objet à changer". «Changement» n'est pas le bon verbe de l'action que l'utilisateur entreprendra dans mes vues personnalisées.

J'ai trouvé les modèles django.contrib.admin qui contrôlent la mise en page des pages de liste de modifications ( Change_list.html et changements_list_results.html ) mais je ne peux pas trouver où le titre est fourni à partir de. Je suppose que c'est une variable passée par une vue quelque part?

Comment puis-je remplacer ce texte avec quelque chose de moins trompeur par exemple. 'Sélectionnez l'objet' au lieu d'un objet "Select Object de changer"? Je suis correct avec la modification de toutes les vues de la liste des changements, pas seulement des particuliers que j'essaie de personnaliser; Mais je préférerais une solution qui est une substitution par opposition à une modification du code DJANGO.CONTRIB.ADMIN si possible.

mise à jour: j'ai trouvé le point de vue responsable de la liste de modifications, c'est main.py dans django \ contrib \ admin \ vues . La variable est self.title sur la ligne 69 (Django 1.0). J'ai obtenu le résultat que je cherche en modifiant cette ligne xxx

à lire xxx

je serais toujours vraiment intéressé d'entendre une meilleure façon d'atteindre le même résultat qui n'implique pas le piratage du code django.contrib.admin - il semble déjà une option d'avoir le titre de la façon dont je l'aimerais, mais je suis Je ne sais pas comment déclencher ça?


0 commentaires

5 Réponses :


1
votes

Il y a déjà un billet pour Changeelist personnalisation: http: // code. djangoproject.com/ticket/9749 . Cela donnera la possibilité de changer de nombreux aspects supplémentaires de l'application Admin. Malheureusement, il n'y a pas de moyen propre pour atteindre vos objectifs.


2 commentaires

Hmm, ce patch a l'air assez prometteur. Espérons que ça va le va. Cela ne me fait pas beaucoup de bien pour le moment, même si j'essaie de m'en tenir au code de la production plutôt que d'utiliser le SVN. Merci de peser dans - on dirait que je vais devoir utiliser le hack et veiller à documenter mes modifications pour les futures mises à niveau. Il est non critique s'il est réinitialisé au code précédent par une mise à niveau que je suppose.


Ticket 9749 est fixe depuis neuf ans. Toute chance de cacher cette réponse obsolète?



4
votes

Pour les versions actuelles de Django:

class CustomChangeList(django.contrib.admin.views.main.ChangeList):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.title = 'My Cool Title'

class MyAdmin(ModelAdmin):
    def get_changelist(self, request, **kwargs):
        return CustomChangeList


0 commentaires

25
votes

Je ne sais pas si toujours pertinent, mais une autre façon de le faire passerait le extra_content pour la méthode Changelist_View . Pour ex: xxx


0 commentaires

-1
votes

Vous pouvez remplacer la méthode et transmettre le titre dans extra_content , voir: xxx


1 commentaires

sa liste de changement de changement ne change pas le formulaire



0
votes

à partir de Django 3.1.7

Je pense que l'OP est de demander le titre "Contenu" de Changeelist (celui indiqué sur la page ci-dessous de la chapelure, pas dans le titre de l'onglet Navigateur). Django le définit à partir du modèle Verbose_Name_plural (défini dans la classe de modèle ' méta ). S'il n'est pas explicitement défini, Django utilise le nom de classe modèle avec suffixé de 'S'. Voici le code de django admin Change_list.html: xxx

donc si vous ne définissez pas le verbose_name_plural ne suffit pas / ne fonctionne pas pour vous, envisagez de remplacer le Modèle Change_List.html et faites votre truc dans le {% Block Content_title%} . Si elle est trop compliquée à faire dans le modèle, vous pouvez transmettre vos propres données de contexte sur le modèle d'administration, comme indiqué dans la réponse de cette réponse ici: Django Comment passer Variables personnalisées au contexte à utiliser dans le modèle d'administration personnalisé?


0 commentaires