Django:有什么方法可以通过中间模型对多对多字段使用多重选择?
文档说:
当您指定中介模型时 使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我通过定义不带“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.