我有以下型号:
class Org(models.Model):
org_id = 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 Member(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(Org, through='OrgToMember', default)
以上模型通过以下模型加入:
class OrgToMember(models.Model):
org_to_member_id = models.AutoField(primary_key=True)
org = models.ForeignKey(Org, unique=False)
member = models.ForeignKey(Member, unique=False)
member_since = models.DateField(auto_now_add=True)
balance = models.DecimalField(default=0, max_digits=19, decimal_places=2)
is_enabled = models.BooleanField(default=True)
is_self_managed = models.BooleanField(default=True)
notifications = models.IntegerField(null=True)
成员在他们所在的每个组织中都有一个余额。他们可以在许多组织中,组织可以有许多成员。我试图带回一个记录列表,其中包含与特定成员相关的以下字段:
org_name balance notifications
如果我创建一个成员对象,我可以列出成员的组织,如下所示:
m = Member.objects.get(pk=2)
m.orgs.values()
这将仅返回Org模型中的字段。或者,我可以把OrgToMember中的字段带回来:
m = Member.objects.get(pk=2)
m.orgtomember_set.values()
我似乎无法合并2个模型并返回我需要的字段(org_name,balance,notifications)。我很确定它与我在模型之间创建的关系或我需要使用'select_related'函数的事实有关,但无论我尝试什么,这似乎都不起作用。
答案 0 :(得分:0)
也许你可以从OrgToMember实例开始并从那一点访问Org。您甚至不必再访问会员了,因为您需要知道的是它的pk,我认为您知道这一点。
otms = OrgToMember.objects.filter(member__pk=2)
for otm in otms:
org_name = otm.org.org_name
balance = otm.balance
notifications = otm.notifications
print org_name, balance, notifications