Foreign keys in django admin list display

Posted by Olivier on Stack Overflow See other posts from Stack Overflow or by Olivier
Published on 2010-03-18T13:55:21Z Indexed on 2010/03/18 17:21 UTC
Read the original article Hit count: 790

Filed under:
|
|

If a django model contains a foreign key field, and if that field is shown in list mode, then it shows up as text, instead of displaying a link to the foreign object.

Is it possible to automatically display all foreign keys as links instead of flat text?

(of course it is possible to do that on a field by field basis, but is there a general method?)

Example:

class Author(models.Model):
    ...

class Post(models.Model):
    author = models.ForeignKey(Author)

Now I choose a ModelAdmin such that the author shows up in list mode:

class PostAdmin(admin.ModelAdmin):
    list_display = [..., 'author',...]

Now in list mode, the author field will just use the __unicode__ method of the Author class to display the author. On the top of that I would like a link pointing to the url of the corresponding author in the admin site. Is that possible?

Manual method:

For the sake of completeness, I add the manual method. It would be to add a method author_link in the PostAdmin class:

def author_link(self, item):
    return '<a href="../some/path/%d">%s</a>' % (item.id, unicode(item))
author_link.allow_tags = True

That will work for that particular field but that is not what I want. I want a general method to achieve the same effect. (One of the problems is how to figure out automatically the path to an object in the django admin site.)

© Stack Overflow or respective owner

Related posts about django-admin

Related posts about django