2016-08-01 88 views
0

我有多個相關模型。給定Work對象具有Crew,其由它們的Person和/或Company及其給定的Role定義。我想建立一個返回所有項目(不同的),對於一個給定Crew實例與給定Role一個高效的查詢......Django多對多匹配多個條件

class Work(models.Model): 
    title=models.CharField(max_length=128) 

class Crew(models.Model(models.Model): 
    work=models.ForeignKey(Work) 
    person=models.ForeignKey(Person) 
    company=models.ForeignKey(Company) 
    role=models.ForeignKey(Role) 

個人記錄都有一個slug場進行識別。 (PersonCompanyRole

我沒有問題,查詢一個給定的WorkPersonCompany但加入Role是我迷路了。

例如, works = works.filter(crew__person__slug=person_slug).distinct()很容易

我是否使用Q對象?

Errr ....也許這是那麼容易,因爲works = works.filter(crew__person__slug=person_slug,crew__role__slug=role_slug).distinct()

我覺得OP剛纔已經回答了自己的問題......

+1

是的,如果我還記得針對M2M領域正確多個約束相同'filter'條款中都有這樣的更新的例子看起來我的權利,以匹配相同的相關對象。 –

回答

0

所以,是的,我回答我自己的問題的亂碼問題但它仍然有幫助。我沒有使用Q對象。

works = works.filter(crew__person__slug=person_slug,crew__role__slug=role_slug).distinct()