2017-03-16 60 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()