添加 django admin 多对多小部件

发布于 2024-11-08 19:29:22 字数 292 浏览 0 评论 0原文

django 管理文档< /a>,它的内容如下:

默认情况下,多对多关系的管理小部件将显示在包含对 ManyToManyField 的实际引用的模型上。

有没有办法让类似的小部件出现在另一个模型(未定义关系的模型)的管理页面上?

In the django admin documentation, it says the following:

By default, admin widgets for many-to-many relations will be displayed on whichever model contains the actual reference to the ManyToManyField.

Is there a way to get a similar widget to appear on the admin page for the other model, the one where the relationship isn't defined?

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

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

发布评论

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

评论(1

年少掌心 2024-11-15 19:29:22

有几种不同的方法可以达到您想要的效果。

这是一种方法,它会给你带来类似(但不相同)的效果,并且可能需要最少的编码。 (示例将使用类 AB,假设前者具有显式定义的多对多关系)

最快的方法:您可以使用 InlineModelAdmin 对象:

class AInline(admin.TabularInline):
    model = A

class BAdmin(admin.ModelAdmin):
    inlines = (AInline,)
admin.site.register(B, BAdmin)

如果您想要获得

There's a couple different ways to get the effect that you're after.

Here's one way, which will get you a similar (but not identical) effect, and probably requires the least coding. (Examples will use classes A and B, assuming that the former has the many to many relationship explicitly defined)

The quickest way: you can use an InlineModelAdmin object:

class AInline(admin.TabularInline):
    model = A

class BAdmin(admin.ModelAdmin):
    inlines = (AInline,)
admin.site.register(B, BAdmin)

If you want the exact effect of getting a <select multiple>, the way you can do it is to use a custom Form class, and assign it to BAdmin.form.

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