Si un modèle django contient un champ de clé étrangère, et si ce champ est affiché en mode liste, il apparaît sous la forme suivante texte au lieu d'afficher un enlace à l'objet étranger.
Est-il possible d'afficher automatiquement toutes les clés étrangères sous forme de liens au lieu de texte plat ?
(bien sûr, il est possible de le faire champ par champ, mais existe-t-il une méthode générale).
Exemple :
class Author(models.Model):
...
class Post(models.Model):
author = models.ForeignKey(Author)
Je choisis maintenant un ModelAdmin de telle sorte que l'auteur apparaisse en mode liste :
class PostAdmin(admin.ModelAdmin):
list_display = [..., 'author',...]
Maintenant, en mode liste, le champ de l'auteur utilisera simplement l'attribut __unicode__
de la méthode Author
pour afficher l'auteur. En plus de cela, je voudrais un enlace pointant vers l'url de l'auteur correspondant dans le site d'administration. Est-ce possible ?
Méthode manuelle :
Par souci d'exhaustivité, j'ajoute la méthode manuelle. Il s'agirait d'ajouter une méthode author_link
dans le PostAdmin
classe :
def author_link(self, item):
return '<a href="../some/path/%d">%s</a>' % (item.id, unicode(item))
author_link.allow_tags = True
Cela fonctionnera pour ce champ particulier mais c'est no ce que je veux. Je veux une méthode générale pour obtenir le même effet. (L'un des problèmes est de savoir comment déterminer automatiquement le chemin d'accès à un objet dans le site d'administration de django).