Rendre l'administrateur Django afficher la clé primaire plutôt que le type d'objet de chaque objet
Dans Django 1.1 admin, lorsque je vais dans ajouter ou modifier un objet, mes objets sont affichés en tant que:
Select host to change
* Add host
Host object
Host object
Host object
Host object
Host object
Ce qui se passe pour tous les modèles dans mon site, pas seulement les Hôtes.
Plutôt que d'afficher le même nom pour chaque objet, je voudrais Django pour afficher la clé primaire.
Select host to change
* Add host
machine1
machine2
Voici mon code:
from django.db import models
# Create your models here.
class Host(models.Model):
host = models.CharField(max_length=100,primary_key=True)
class Admin:
list_display = ('host')
class Test(models.Model):
testname = models.CharField(max_length=100,primary_key=True)
class Admin:
list_display = ('testname')
class Result(models.Model):
host = models.ForeignKey(Host)
TESTRESULT_CHOICES = (
('P', 'Pass'),
('F', 'Fail'),
)
testresult = models.CharField(max_length=1, choices=TESTRESULT_CHOICES)
reason = models.CharField(max_length=100)
time = models.DateTimeField()
testname = models.OneToOneField(Test, primary_key=True)
class Admin:
list_display = ('host','testname','time','testresult','reason')
Lecture http://docs.djangoproject.com/en/dev/ref/contrib/admin/:
"ModelAdmin.list_display
Ensemble list_display pour contrôler les champs qui sont affichés sur la modification de la liste de la page de l'admin."
Cependant ce n'est tout simplement pas l'air de fonctionner. Suis-je en train de faire quelque chose de mal?
source d'informationauteur mikemaccana
Vous devez vous connecter pour publier un commentaire.
Ajouter un
__unicode__()
méthode pourHost
. Pour afficher la clé primaire de votre hôte objets, vous voulez quelque chose comme:Vous voudrez peut-être penser montrant le contenu de la
host
champ:Vous aurez besoin de faire quelque chose de similaire pour chaque modèle que vous avez.
Pour Python 3 de compatibilité, vous aurez envie de faire quelque chose comme ceci (voir la documentation):
contrib.admin
a été retravaillé en 1.0, et les vieuxAdmin
classes à l'intérieur de modèles ne fonctionnent plus. Ce que vous avez besoin estModelAdmin
sous-classe dansyour_application.admin
module, par exempleOu de l'utilisation
__unicode__
dans le modèle lui-même, par exemple,Il pourrait également être utile de mentionner que, si vous utilisez un auto-incrémentation de clé primaire pour vos modèles, vous aurez besoin de les contraindre dans une chaîne de caractères, par exemple: