Je voudrais changer le comportement par défaut de la façon dont la barre latérale des modifications récentes de l'administrateur affiche le nom des "objets" ajoutés. Reportez-vous à l'image ci-dessous:
Je voudrais changer la façon dont ils sont nommés dans l'administrateur Idéalement, j'aimerais pouvoir le changer de "MyModelName object" en, comme dans l'exemple d'objet "Policy", quelque chose comme "Policy: {{valeur du champ" Policy Name "de la stratégie.}}.
Je pensais que __unicode__
pour mon modèle Patient géré cela, mais cela ne semble pas. Toute aide est appréciée.
django
django-models
django-admin
patrickn
la source
la source
__unicode__
fait ça. Collez votre code pour que nous puissions voir ce qui ne va pas__unicode__
n'a pas fonctionné pour moi en Python 3. Cependant,__str__
a fonctionné comme documenté dans la réponse ciRéponses:
__unicode__
fait ça. Votre modèle devrait ressembler à ceci:Sur Python 3, vous devez utiliser
__str__
:la source
L'utilisation de la
__str__
méthode fonctionne sur Python3 et Django1.8:la source
La chaîne que vous voyez provient de
__unicode__
method, comme d'autres l'ont mentionné. Mais le fait est que l'administrateur enregistre la représentation sous forme de chaîne d'un objet lorsqu'il crée un événement de journal.Par conséquent, si vous ajoutez une__unicode__
implémentation après l'enregistrement de l'entrée de journal, vous ne verrez pas de nouveaux titres sur les anciens éléments, seulement après avoir effectué une nouvelle activitéla source
Les réponses mentionnées
__str__
et les__unicode__
méthodes sont correctes. Comme il est indiqué dans les documents cependant, depuis la version 1.6 (je pense), vous pouvez utiliser lepython_2_unicode_compatible
décorateur pour les deux Python 2 et Python 3:Vous pouvez également utiliser ce qui précède dans des non-
Model
objets.la source
Vous devez définir la colonne que vous souhaitez afficher ...
par exemple:
la source
Vous avez raison de penser que cela
__unicode__
fait cela. J'ai ceci en cours d'exécution en ce moment:Quand je regarde dans la liste des actions récentes, je vois le titre du film que je viens de monter.
la source
Cela fonctionnerait, en utilisant def str (self): qui renvoie self.title
Utilisez quelque chose comme:
la source
Depuis que cette question a 6 ans, beaucoup de choses ont changé. Permettez-moi de faire une mise à jour, avec python3.6 et la dernière version de Django (2.1.2), vous devriez toujours utiliser
__str__()
dans le nouveau code.__unicode__()
est une vieille histoire pour python2.7 car en python3,str
c'estunicode
.la source
En ajoutant une
__str__()
méthode au modèle dePatient
cette façon:affichera le nom du patient à la place de l'objet. Pour plus de détails, vérifiez ici
la source