2010-10-27 9 views
0

J'ai un site django. un extrait de myapp/models.py ressemble à ceci:administration du site django (saisie des données des appareils)

class Continent(models.Model): 
    name = models.CharField(max_length=128, db_index=True, unique=True) 


class GeographicRegion(models.Model): 
    continent = models.ForeignKey(Continent, null=False) 
    name = models.CharField(max_length=128, null=False) 

Lorsque je tente d'ajouter de nouvelles régions géographiques, lorsque je clique sur la liste déroulante (sélectionnez le contrôle) pour choisir un continent, les seules valeurs (options) dans la liste déroulante sont:

continent object 
continent object 
continent object 
continent object 
continent object 
continent object 

Je me attendais à voir les noms des continents à la place, pour que je puisse créer des régions géographiques concernées par continent. Comment obtenir le nom à afficher dans la liste à la place de 'objet continent'?

Conseil: i ajouté str (auto) et rééd méthodes (auto) à mon modèle ContinentAdmin dans myapp/admin.py comme ceci:

myapp/admin.py

58 class ContinentAdmin(admin.ModelAdmin): 
59 def __repr__(self): 
60  return self.name 
61 
62 admin.site.register(Continent,ContinentAdmin) 

, mais cela n'a eu aucun (observable) effet

Répondre

2

Vous devez définir la méthode __unicode__ dans le modèle:

def __unicode__(self): 
    return self.name 
+0

Yup, cela semble avoir fait l'affaire. Où est-ce documenté? - Je peux donc le marquer. Aussi, y a-t-il de toute façon que je peux afficher l'identifiant de l'objet stocké dans la base de données), sans avoir à regarder directement la base de données? – skyeagle

+1

@skyeagle tout est documenté ici: http://docs.djangoproject.com/fr/dev/ref/contrib/admin/ Je crois que vous êtes à la recherche d'option list_display pour AdminModel – Anpher

+0

Merci pour cela! – skyeagle

Questions connexes