Django:有什么方法可以通过中间模型对多对多字段使用多重选择?

发布于 2024-08-15 03:47:37 字数 701 浏览 3 评论 0原文

文档说:

当您指定中介模型时 使用 through 参数 ManyToManyField,管理员不会 默认显示一个小部件。

好的,但是如果我想要一个多选小部件呢?

我有一个模型:

class Quotation(models.Model):
 source    = models.CharField()
 sourceLink  = models.URLField( blank=True)
 text   = models.TextField()
 site   = models.ManyToManyField(Site, through="QuoteSite" )

和一个中介模型:

class QuoteSite(models.Model):
 entry    = models.ForeignKey(Quotation)
 site   = models.ForeignKey(Site)
 dateLastUsed = models.DateField(default=date(2000,01,01))

我想要做的就是允许管理员中的用户选择一个或多个站点进行报价。我不在乎他们是否可以编辑中介模型中的 datelastUsed 字段。

这不可能吗?

The docs say:

When you specify an intermediary model
using the through argument to a
ManyToManyField, the admin will not
display a widget by default.

OK, but how about if I want a multiple select widget?

I have a model:

class Quotation(models.Model):
 source    = models.CharField()
 sourceLink  = models.URLField( blank=True)
 text   = models.TextField()
 site   = models.ManyToManyField(Site, through="QuoteSite" )

and an intermediary model:

class QuoteSite(models.Model):
 entry    = models.ForeignKey(Quotation)
 site   = models.ForeignKey(Site)
 dateLastUsed = models.DateField(default=date(2000,01,01))

All I want to do is allow users in admin to select one or more sites for their quotation. I don't care whether they can edit the datelastUsed field in the intermediary model.

Is this impossible?

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

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

发布评论

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

评论(1

烟织青萝梦 2024-08-22 03:47:37

我通过定义不带“through”的“site”m2m 字段,而是指定与 QuoteSite 类使用的相同的 db_table 来解决我的问题。因为我使用 QuoteSite 类(而不是 Quotation 类)上的管理器检索“TodaysQuote()”,所以 Quotation 类根本没有理由知道 dateLastUsed。

I solved my problem by defining the 'site' m2m field without the 'through', instead specifying the same db_table as used by the QuoteSite class. Because I retrieve my 'TodaysQuote()' using a manager on the QuoteSite class, not the Quotation class, it turns out there's no reason for the Quotation class to know about the dateLastUsed at all.

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