使用Django的内置模型,如何在三个模型之间创建三重连接.
例如:
用户,角色和事件是模型.
用户有很多角色,而且角色很多用户.(多对多)
事件有很多用户,而用户有很多事件.(多对多)
但对于任何给定的事件,任何用户可能只有一个角色.
如何在模型中表示?
zacherates写道:
我将角色建模为用户和角色之间的关联类(...)
我也推荐这个解决方案,但你也可以使用Django提供的一些语法糖:ManyToMany与额外字段的关系.
例:
class User(models.Model): name = models.CharField(max_length=128) class Event(models.Model): name = models.CharField(max_length=128) members = models.ManyToManyField(User, through='Role') def __unicode__(self): return self.name class Role(models.Model): person = models.ForeignKey(User) group = models.ForeignKey(Event) date_joined = models.DateField() invite_reason = models.CharField(max_length=64)