2015-10-02 31 views
1

我的出版物中包含掃描頁面和單詞的列表。關係是這樣的:Django:通過幾種關係進行篩選

# models.py 
class Publication(models.Model): 
    pass 

class Page(models.Model): 
    publication = models.ForeignKey('Publication') 

class Link(models.Model): 
    page = models.ForeignKey('Page') 

class Word(models.Model): 
    link = models.ForeignKey('Link') 

現在,我有一個單詞的編號。我如何獲取每個包含該詞的出版物?另外,當給出一個出版物的ID時,我如何獲得其中所有單詞的列表?

回答

0

有了這個配置,Word只能有一個Publication所以下面的查詢集會給你一個Publication不管什麼作爲你的模型與ForeignKey從底部連接到頂部,而不是ManyToManyField

Publication.objects.filter(page_set__link__set__word__id=word_id) 

同樣,這將給你相同的出版物作爲一個對象:

Word.objects.get(pk=word_id).link.page.publication 

如果你想獲得所有單詞的發佈:

Word.objects.filter(link__page__publication__id=publication_id)