Python 如何访问django多对多关系的联接表/对象
我有以下型号:Python 如何访问django多对多关系的联接表/对象,python,django,django-models,many-to-many,django-orm,Python,Django,Django Models,Many To Many,Django Orm,我有以下型号: class InvestmentChoice(models.Model): title = models.CharField(max_length=64) class Offering(models.Model): entity = models.OneToOneField(Entity) investment = models.ManyToManyField(InvestmentChoice, blank=True) 创建的联接表具有以下字段
class InvestmentChoice(models.Model):
title = models.CharField(max_length=64)
class Offering(models.Model):
entity = models.OneToOneField(Entity)
investment = models.ManyToManyField(InvestmentChoice, blank=True)
创建的联接表具有以下字段:
id | offering_id | investment_choice_id
1 | 277 | 5
我想得到一个有特定投资选择的实体对象列表。我想这意味着我需要访问多对多连接表
例如,如果我希望所有实体的投资选择id为5
如果是这样,我如何使用django查询来实现这一点?如果您希望获得所有具有investment 5的发行实体,下面的查询将完成此工作
Offering.objects.filter(investment__id=5)
如果您想获得某些投资实体的所有产品,请在中使用
:
from django.db.models import Q
investments = Investment.objects.filter(Q(id=1) || Q(id=5))
Offering.objects.filter(investment__in=investments)
有关多对多查询的更多信息,您可以检查和以进行查询。我可以通过两个步骤完成此操作:
choice = InvestmentChoice.objects.get(pk=5)
然后,我可以获得所有相关的产品对象,如:
offerings = choice.offering_set.all()
根据,您可以向InvestmentChoice模型添加如下内容:
entities=models.ManyToManyField(Entity,通过class='Offering')
希望有帮助