J'ai une application qui utilise le UserProfile
de Django pour étendre le modèle intégré Django User
. On dirait un peu comme:Django Admin: Commande des relations ForeignKey et ManyToManyField faisant référence Utilisateur
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
# Local Stuff
image_url_s = models.CharField(max_length=128, blank=True)
image_url_m = models.CharField(max_length=128, blank=True)
# Admin
class Admin: pass
J'ai ajouté une nouvelle classe à mon modèle:
class Team(models.Model):
name = models.CharField(max_length=128)
manager = models.ForeignKey(User, related_name='manager')
members = models.ManyToManyField(User, blank=True)
Et il est inscrit dans l'Admin:
class TeamAdmin(admin.ModelAdmin):
list_display = ('name', 'manager')
admin.site.register(Team, TeamAdmin)
Hélas, dans le inteface admin Lorsque je sélectionne un responsable dans la liste déroulante ou que je sélectionne des membres de l'équipe via le champ de sélection multiple, ils sont classés par ID utilisateur. Pour la vie de moi, je n'arrive pas à comprendre comment les trier.
J'ai une classe similaire avec:
class Meta:
ordering = ['name']
Cela fonctionne très bien! Mais je ne le fais pas "propre" la User
classe, et quand j'essayer cette astuce dans UserAdmin
:
class Meta:
ordering = ['username']
Je reçois:
django.core.management.base.CommandError: One or more models did not validate:
events.userprofile: "ordering" refers to "username", a field that doesn't exist.
user.username
ne fonctionne pas non plus. Je pourrais spécifier, comme image_url_s
si je voulais. . . comment puis-je dire à l'administrateur de trier mes listes d'utilisateurs par username
? Merci!
Merci, Daniel! – dannyman
Depuis django 1.8, vous avez également besoin de 'fields = '__all __'' dans 'Meta' de classe. – Flash