Django 的 ManyTomany 与其他领域的关系

我想在这个自动创建的 ManyTomany 连接表中存储一些额外的信息?

在我的例子中,我有两个表: “雇员”和“项目”。我想要存储的是每个员工在每个项目中每小时的工作量,因为这些值是不相同的。那我该怎么做?

我想到的是,不使用“ ManyToManyField”方法,而是显式地创建第三个类/表来存储这些新信息,并使用“ ForeignKey”方法设置它与“ Employes”和“ Projects”的关系。我很确定这能行,但这是最好的办法吗?

50858 次浏览

Here is example of what you want to achieve:

http://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships

In case link ever breaks:

from django.db import models


class Person(models.Model):
name = models.CharField(max_length=128)


def __str__(self):              # __unicode__ on Python 2
return self.name


class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')


def __str__(self):              # __unicode__ on Python 2
return self.name


class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)