在Django管理员中,有没有办法显示模型的一对多对象的实际链接列表?

时间:2012-04-11 22:55:45

标签: django django-admin

如果这太复杂或者没有正确的做事方式,请随时将我与别人联系起来,或者告诉我我应该采取另一种方式......

基本上,我正在处理有客户的项目,每个客户都附加了任意数量的网站。因此,网站模型对客户端模型具有ForeignKey。网站管理页面非常深入,每个客户可能有10个或更多网站,所以我不希望它们全部显示为内联,因为这看起来非常混乱和疯狂。

我想要的是,当您转到管理面板并点击“客户”时,您会进入更改页面,其中包含您为客户编辑的基本内容,然后每个客户的网站管理页面的实际链接的内联。像这样:

更改客户端

一般

名称:

地址:

电话:

网站

链接编辑网站1

链接编辑网站2

链接编辑网站3

链接编辑网站4

链接编辑网站5

1 个答案:

答案 0 :(得分:5)

您可以使用仅包含模型更改页面链接的TabularInline

class ClientAdmin(admin.ModelAdmin):
    # everything as normal
    inlines = WebsiteInline,

class WebsiteInline(admin.TabularInline):
    model = Website
    fields = 'link',
    readonly_fields = 'link',
    def link(self, instance):
        url = reverse("admin:myapp_website_change", args = (instance.id,))
        return mark_safe("<a href='%s'>%s</a>" % (url, unicode(instance)))

admin.site.register(Client, ClientAdmin)
admin.site.register(Website)

请参阅我最近提出的问题How do I add a link from the Django admin page of one object to the admin page of a related object?,该问题涉及如何做到这一点,但有几对模型而不是一对。