在 Django admin 中显示模型的一对多关系(列表模式)

发布于 2024-09-03 09:12:51 字数 226 浏览 4 评论 0原文

在 Django 管理站点中,当列出给定模型的所有对象时,我知道我们可以通过 list_display 自定义为 ModelA 显示哪些列。

假设 ModelA 与 ModelB 具有一对多关系。我想在 ModelA 的列表页面上添加另一列,其中每个条目都是一个 URL,指向 ModelB 的所有对象,该对象与该行中的 Model A 的相应实例具有外键关系。如何使用管理应用程序实现此自定义?

In Django admin site, when listing all the objects for a given model, I know we can customize which columns get displayed for a ModelA via list_display

Say that ModelA has a one-to-many relationship with ModelB. I would like to add another column on the listing page for ModelA, where each entry is a URL pointing to all objects of ModelB having a foreign key relationship on corresponding instance of Model A in that row. How can I achieve this customization with the admin app?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱格式化 2024-09-10 09:12:51

您应该向 ModelA 的管理类添加一个方法:

def modelb_link(self, inst):
    url = u'../modelb/?modela__id__exact=%d' % inst.id
    return u'<a href="%s">Models B</a>' % url
modelb_link.allow_tags = True
modelb_link.short_description = u'Models B'

在 url 中,“modela__id__exact”部分是列表页面的过滤器,其中“modela”是 ModelB 类中链接到 ModelA 的foreignKey 字段的名称。

然后在“list_display”属性中使用此方法即可完成。如果您遇到任何问题,请提出,我会尽力提供帮助。

问候,
卢卡斯

you should add a method to ModelA's admin class:

def modelb_link(self, inst):
    url = u'../modelb/?modela__id__exact=%d' % inst.id
    return u'<a href="%s">Models B</a>' % url
modelb_link.allow_tags = True
modelb_link.short_description = u'Models B'

In the url the 'modela__id__exact' part is a filter for list page, where 'modela' is the name of ForeignKey field, in ModelB class, that links to ModelA.

Then use this method in 'list_display' property and you are done. If you encounter any problems, just ask, I'll try to help.

Greetings,
Lukasz

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文