django - 需要引用list_display中的另一个模型

时间:2016-04-20 10:37:22

标签: python django django-admin

当我点击作者字段时,我需要引用点击的作者模型管理员 - 如何做到这一点?

class BookAdmin(admin.ModelAdmin):
     list_display = ['name', 'pub_date', 'author',]

2 个答案:

答案 0 :(得分:1)

在管理类

   def author_link(self, obj):
        return '<a href="/admin/authors-appname/author-model-name/%s">%s</a>' \
               % (obj.auther.pk, obj.auther)
    author_link.allow_tags = True
    author_link.short_description = "auther"

    list_display = ['name', 'pub_date', 'author_link',]
    readonly_fields = ('author_link', )

更优雅的是将硬链接更改为模型中的函数 - get_auther_absolute_url并从admin调用它

答案 1 :(得分:0)

关于此问题,有几个答案,即:

Change list link to foreign key change page

Link in django admin to foreign key object

引用上述内容,您需要做的是定义自己的方法,将其称为go_to_author()作为BookAdmin类的一部分,因此

class BookAdmin(admin.ModelAdmin):
    list_display = ['name', 'pub_date', 'go_to_author',]
    def go_to_author(self, obj):
        link=urlresolvers.reverse("admin:yourapp_author_change", args=[obj.author.id])
        return u'<a href="%s">%s</a>' % (link, obj.author.name)
    go_to_author.allow_tags=True

我希望这有帮助!