4

如果这太复杂或不是正确的做事方式,请随时将我链接到其他内容或只是告诉我我应该以另一种方式做...

基本上,我正在做一个有客户的项目,每个客户都有任意数量的网站。所以 Websites 模型对 Client 模型有一个 ForeignKey。网站管理页面非常深入,每个客户可能有 10 个或更多网站,所以我不想让它们都显示为内联,因为那看起来真的很混乱和疯狂。

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

更改客户端

一般的

姓名:

地址:

电话:

网站

链接编辑网站 1

链接编辑网站 2

链接编辑网站 3

链接编辑网站 4

链接编辑网站 5

4

1 回答 1

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)

请参阅我最近的问题如何将一个对象的 Django 管理页面中的链接添加到相关对象的管理页面?这是关于如何做到这一点,但有几对模型,而不仅仅是一个。

于 2012-04-11T23:15:59.007 回答