2017-03-16 86 views
0

我有以下型号:如何访问Django的许多加盟表/对象一对多的关系

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 

我希望得到一个具有一定投资选择的实体对象列表。我想这意味着我需要访问多对多的连接表。

例如,如果我想所有产品的5

如果是这样investment_choice_id,我怎么能做到这一点与Django的查询实体?

回答

-1

如果您想要获得投资5的所有产品实体,则以下查询将完成此工作。

Offering.objects.filter(investment__id=5) 

如果你想获得所有与一些投资实体产品,使用in

from django.db.models import Q 
investments = Investment.objects.filter(Q(id=1) || Q(id=5)) 
Offering.objects.filter(investment__in=investments) 

更多关于多到许多查询,可以查询Django Doc并进行查询read this documentation

0

我能够做到这两个步骤:

choice = InvestmentChoice.objects.get(pk=5) 

那么我就能够得到所有等相关联的发行对象:

offerings = choice.offering_set.all()