我在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做一些自动操作。特别令人讨厌的是,在管理员中创建活动时,扬声器列表不可用。
我意识到一般来说Django不知道在Role.role
字段中放什么。但这是可选的(blank=True
)。我希望那个
Role.role
的值)。第二种可能性比第一种更有用,也更普遍。仍然Django管理员没有这两个:而是扬声器字段从事件中删除。
有没有办法让Django管理员按上述方式行事?