2013-05-17 85 views
4

我試圖做一個查詢搜索多對多關係, 這是我到目前爲止有:Django的搜索多對多查詢

designs = designs.filter(Q(title__icontains = search) | 
         Q(tags__icontains = search)) 

你知道我怎麼能搜索查詢中的tags.title字段?

這裏是模型,我清理,以便他們的arent這麼長時間:)

class Design(models.Model): 
    title = models.CharField(max_length = 50, default = "") 
    slug = models.SlugField(unique = True) 
    user = models.ForeignKey(User, related_name = "design_user") 
    description = models.TextField() 
    tags = models.ManyToManyField(to = Tags) 

class Tags(models.Model): 
    title = models.CharField(max_length = 50, unique = True) 

    # Allows the category to list as a dropdown in the admin 
    def __unicode__(self): 
     return self.title 

多數時候我擡起頭使用過濾器的問題,我不掌握Django的,所以我問這個希望不要添加重複的問題。

+2

你在找'tags__title__icontains = search'? –

+0

PLZ複製粘貼你的模型定義的問題將容易理解。 –

+0

我添加了模型! – JREAM

回答

8

與適當field_lookup開始:tags__title__icontains = search

designs = designs.filter(Q(title__icontains = search) | 
         Q(tags__icontains = search) | 
         Q(tags__title__icontains = search)) 

字段查詢是非常有用的,你應該看一看the docs

+0

是的,這是正確的!我曾嘗試Q(tags_title__contains)缺失和下劃線,所以我認爲我是一個失敗的事業!非常感謝這個作品完美! – JREAM

+1

非常歡迎! :) –

0

你可以做到這一點使用tags__title__icontains作爲

designs = designs.filter(Q(title__icontains = search) | 
         Q(tags__title__icontains = search))