2011-08-24 3 views
1

Existe-t-il un moyen de réinitialiser le contenu du list_display (dans la vue d'administration) d'un modèle à chaque fois que le modèle est filtré? (de sorte que le filtrage par différents objets donnera un nombre différent de colonnes dans la table d'affichage).Django - Définir de manière dynamique le contenu de list_display (vue admin)


Par exemple:

J'ai trois modèles dans mon application django: Child, Family, Pet. Child a une clé d'origine à Family, et Pet a également une clé d'origine à Family. Maintenant, dans la vue d'administration de Child, je veux être en mesure de filtrer par Family, et après le filtrage, la table affichera le nom de l'enfant et le nom de chacun des animaux de compagnie que sa famille possède. De cette façon, le nombre de colonnes dans la table affichée change en fonction du nombre d'animaux domestiques de l'objet Family dont le filtrage a été effectué.

Merci.

Répondre

1

list_display est défini dans admin.py et nécessite un redémarrage du serveur pour prendre effet. Par conséquent, il ne peut pas être modifié à la volée. En outre, Django ne semble pas prendre en charge l'affichage des champs ManyToMany de cette manière, vous ne pouvez donc pas afficher les noms de familier dans la vue de liste "out of the box". Selon the documentation:

Si vous voulez faire tout de même, donner à votre modèle une méthode personnalisée et ajouter le nom à list_display de cette méthode.

Questions connexes