Si un modèle de django contient un champ de clé étrangère, et si ce champ est affiché en mode liste, il apparaît comme texte, au lieu d'afficher un lien à l'objet étranger .clés étrangères dans l'affichage de la liste d'admin django
Est-il possible d'afficher automatiquement toutes les clés étrangères en tant que liens au lieu d'un texte plat?
(bien sûr, il est possible de le faire sur un terrain par base sur le terrain, mais est-il une méthode générale?)
Exemple:
class Author(models.Model):
...
class Post(models.Model):
author = models.ForeignKey(Author)
Maintenant, je choisis une ModelAdmin telle que l'auteur montre en mode liste:
class PostAdmin(admin.ModelAdmin):
list_display = [..., 'author',...]
maintenant en mode liste, le champ auteur utilisera simplement la méthode __unicode__
de la classe Author
pour afficher l'auteur. En plus de cela, je voudrais un lien pointant vers l'URL de l'auteur correspondant dans le site d'administration. Est-ce possible?
Méthode manuelle:
Par souci d'exhaustivité, j'ajouter la méthode manuelle. Il serait d'ajouter une méthode author_link
dans la classe PostAdmin
:
def author_link(self, item):
return '<a href="../some/path/%d">%s</a>' % (item.id, unicode(item))
author_link.allow_tags = True
qui fonctionnera pour ce domaine particulier, mais qui est pas ce que je veux. Je veux une méthode générale pour obtenir le même effet. (Un des problèmes est comment trouver automatiquement le chemin vers un objet dans le site d'administration django.)
Merci pour cette réponse! Pourriez-vous élaborer sur l'utilisation des inlines? Comment cela aiderait-il? –
@Olivier: J'ai édité ma réponse pour vous diriger dans la bonne direction en ce qui concerne les inlines. – cethegeek