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

标签 django django-admin

如果这太复杂或不是正确的做事方式,请随时将我与其他事情联系起来,或者只是告诉我我应该以另一种方式做...

基本上,我正在处理一个有客户的项目,每个项目都有任意数量的网站附加到它。所以网站模型有一个到客户端模型的外键。网站管理页面非常深入,每个客户可能有 10 个或更多网站,所以我不想让它们全部显示为内联,因为这看起来真的很困惑和疯狂。

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

更换客户

一般的

姓名:

地址:

电话:

网站

链接到编辑网站 1

链接到编辑网站 2

链接到编辑网站 3

链接到编辑网站 4

链接到编辑网站 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?这是关于如何做到这一点,但有几对模型而不是一个模型。

关于django - 在 Django 管理员中,有没有办法显示模型的一对多对象的实际链接列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10115137/

相关文章:

python - django - 将现有的 ModelAdmin 及其内联添加到另一个管理表单

django - 登录尝试失败次数过多后锁定用户

django - Redis+Docker+Django - 错误111连接被拒绝

python - Django-Models:TypeError:强制转换为 Unicode:需要字符串或缓冲区,用户发现

javascript - 如何在 Django 中使用 Sass 以及版本控制 CSS 和 JS Assets 以清除缓存

django - 在 django admin 中向一个对象添加一个额外的按钮

django:在管理员中显示组用户数

django - 递归查询: comparing one field to another of the same class

Django管理,使用ImportExportModelAdmin和MarkdownxModelAdmin(多个)

Django:自定义管理站点类的管理注册装饰器