ManyToManyField 上的可选附加数据
Posted
技术标签:
【中文标题】ManyToManyField 上的可选附加数据【英文标题】:Optional additional data on ManyToManyField 【发布时间】:2011-08-25 14:31:57 【问题描述】:我在 Django 中有一个 ManyToManyField,我想为该关系保存其他信息。我正在做的是
class Speaker(models.Model):
name = models.CharField(max_length=50)
title = models.CharField(max_length=100, blank=True)
description = models.TextField(blank=True)
class Event(models.Model):
title = models.CharField(max_length=120)
speakers = models.ManyToManyField(Speaker, blank=True, null=True, through='Role')
class Role(models.Model):
speaker = models.ForeignKey(Speaker)
event = models.ForeignKey(Event)
role = models.CharField(max_length=50, blank=True)
根据documentation,这可以防止 Django 执行一些自动操作。特别烦人的是,在后台创建 Event 时,Speaker 列表不可用。
我意识到通常 Django 不知道在 Role.role
字段中输入什么。但这是可选的 (blank=True
)。我会期待的
Role.role
的值)。
第二种可能比第一种更有用,也更通用。 Django 管理员仍然没有执行这两个操作:而是从事件中删除了扬声器字段。
有没有办法让 Django 管理员的行为如上所述?
【问题讨论】:
【参考方案1】:解决方案在于this answer。简而言之,应该使用InlineModelAdmin
,如here 所记录的那样。这正好实现了我描述的第二种行为。
【讨论】:
以上是关于ManyToManyField 上的可选附加数据的主要内容,如果未能解决你的问题,请参考以下文章
如何让 WPF DataGrid 单元格右对齐而不使新行上的可选区域变小?