我正在将我的应用程序迁移到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时,我手动创建了连接表,并在连接表中定义了我需要的这些字段。
答案 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}}