2
我在Django中有一個ManyToManyField,我想保存關係的附加信息。我在做什麼是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
)。我預計
- 或者Django的認識到,角色只有可選字段,讓我用多對多的關係像往常一樣(創建一個空的默認值的字段),或
- Django管理讓我補充音箱到新創建的事件,併爲每個此類發言者索要附加信息(值爲
Role.role
)。
第二種可能性會比第一種更有用也更普遍。仍然Django管理員不會執行這兩個操作:而是將揚聲器字段從事件中刪除。
有沒有辦法讓Django的管理員像上面描述的那樣行事?