我正在将应用程序迁移到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时,我手动创建了联接表,并在联接表中定义了我需要的这些字段。
使用through
参数ManyToManyField
您可以显式定义联接表,并将balance字段放在那里。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句