2013-12-18 8 views
6

Bei einem Eins-zu-Eins-Erweiterung eines Modell, wie das Django User-Modell:Zugriff von django Admin list_display, ein Wert von einem One-To-One Tabelle

class UserProfile(models.Model): 
    user  = models.OneToOneField(User, related_name='profile', unique=True) 
    avatar  = models.ImageField(_('Avatar')) 
    foo   = models.CharField(max_length=100, verbose_name="xxx") 

Wie kann ich zeigen, dass in der Administrator?

class UserAdmin(admin.ModelAdmin): 
    list_display = ('email', 'profile__foo' <--NOT WORKING) 

A in der Nähe Spiel Frage ist Django Admin: How to display value of fields with list_display from two models which are in oneToOne relation?

Antwort

11

Die allgemeine Methode wäre:

class UseAdmin(admin.ModelAdmin): 
    list_display = ('email', 'profile_foo') 
    def profile_foo(self, x): 
     return x.profile.foo 
    profile_foo.short_description = 'foo' 

x hier ist das Objekt des Modells Sie Anzeigen sind