Comment puis-je renommer une étiquette de colonne dans Django Admin pour un champ qui est une méthode//propriété?
Je suis en train de redéfinir ma page admin pour le auth.User
modèle.
Tout fonctionne bien, sauf pour une chose. Vérifiez le code ci-dessous:
from django.contrib import admin
from django.contrib.auth.models import User
from access.models import UserProfile
class UserProfileInline(admin.StackedInline):
model = UserProfile
class UserAdmim(admin.ModelAdmin):
inlines = [UserProfileInline,]
list_display = ['id', 'username', 'get_full_name', 'email']
admin.site.unregister(User)
admin.site.register(User, UserAdmim)
Comme vous pouvez le voir, l'un des domaines que je veux être affiché dans le modèle de page de la liste -- défini par list_display
-- est get_full_name
. Le problème est que l'étiquette de colonne dans l'admin s'affiche comme Obtenir le nom complet.
Ma question est simple: puis-je remplacer ce? Si oui, comment?
Merci pour votre aide.
Vous devez vous connecter pour publier un commentaire.
Définir un attribut dans votre fonction appelée
short_description
désirée pour votre étiquette dans votre définition du modèle.Alternativement, si vous ne voulez pas polluer votre modèle avec l'admin code spécifique, vous pouvez définir
list_display
à une méthode sur laModelAdmin
qui prend un seul argument: l'instance. Vous aurez également à définirreadonly_fields
de sorte que l'admin n'essayez pas de chercher ce domaine dans votre modèle. Je préfixe admin champs avec_
à se différencier.Mise à jour:
Noter que ce sera la pause admin par défaut de la commande. Votre admin n'aura plus les champs de tri en cliquant sur l'étiquette. Pour activer cette fonctionnalité à nouveau, de définir un
admin_order_field
.Mise à jour 2:
J'ai écrit un admin méthode décorateur qui simplifie ce processus, car une fois que j'ai commencé à utiliser très descriptif détaillé des noms de méthode, la définition des attributs de la fonction est devenue massivement répétitif et l'encombrer.
auth.User
tu devrais aller dans django source. Puisque ce n'est pas vraiment une option, voir la deuxième partie de ma réponse avec le_my_field
.