Django与连接表特定字段有很多很多关系

时间:2014-01-26 17:22:27

标签: django orm django-models many-to-many

我正在将我的应用程序迁移到Django并使用他们的内置ORM而不是编写SQL查询。我遇到的问题是与我的多对多关系中的一个。我有以下型号:

class Orgs(models.Model):
    org = models.AutoField(primary_key=True)
    org_name = models.CharField(max_length=45, null=False)
    org_hood = models.CharField(max_length=60, null=False)
    creation_date = models.DateField(auto_now_add=True)

class Members(models.Model):
    member_ID = models.AutoField(primary_key=True)
    user = models.OneToOneField(User)
    nick_name = models.CharField(max_length=20, null=False)
    is_self_managed = models.BooleanField(default=True)
    orgs = models.ManyToManyField(Orgs, null=True)

有许多组织和许多成员。成员可以是许多组织的一部分,组织可以有许多成员。每个成员都有一个余额(0.00美元)与他们所属的组织相关联。例如:

member1 is in Org1 with a balance of $3.85
member1 is in Org2 with a balance of $2.00
member2 is in Org1 with a balance of $0.85

我无法弄清楚如何定义此平衡字段。当我没有使用ORM时,我手动创建了连接表,并在连接表中定义了我需要的这些字段。

1 个答案:

答案 0 :(得分:6)

使用ManyToManyField class Orgs(models.Model): ... members = ManyToManyField(Members, through='Membership') class Members(models.Model): ... class Membership(models.Model) org = models.ForeignKey(Orgs) member = models.ForeignKey(Members) balance = models.DecimalField() # or whatever your field type is 参数,您可以明确定义连接表并将平衡字段放在那里。

{{1}}