2009-09-23 7 views
3

Je tente d'étendre le modèle utilisateur contrib.auth de django, en utilisant un modèle en ligne 'Profile' pour inclure des champs supplémentaires.Django: comment inclure des champs de modèle dans le list_display?

from django.contrib import admin 
from django.contrib.auth.models import User 
from django.contrib.auth.admin import UserAdmin 

class Profile(models.Model): 

    user = models.ForeignKey(User, unique=True, related_name='profile') 
    avatar = '/images/avatar.png' 
    nickname = 'Renz' 

class UserProfileInline(admin.StackedInline): 

    model = Profile 

class UserProfileAdmin(UserAdmin): 

    inlines = (UserProfileInline,) 

admin.site.unregister(User) 
admin.site.register(User, UserProfileAdmin) 

Cela fonctionne très bien pour la page admin « Changer d'utilisateur », mais je ne peux pas trouver un moyen d'ajouter des champs de modèle en ligne dans la list_display. Il suffit de spécifier les noms des champs de profil dans list_display me donne une erreur:

UserProfileAdmin.list_display[4], 'avatar' is not a callable or an attribute of 'UserProfileAdmin' or found in the model 'User'.

je peux créer un appelable qui recherche l'utilisateur dans la table de profil et renvoie le domaine concerné, mais cela me laisse sans la possibilité de trier la liste par les champs en ligne, que je dois vraiment pouvoir faire.

Des suggestions?

Répondre

7

Vous avez mentionné la seule solution - créer un appelable. Il n'y a actuellement aucun autre moyen de le faire, et oui cela signifie que vous ne pouvez pas trier par cette colonne.

+1

Est-ce encore vrai, deux ans plus tard? – GDorn

Questions connexes