2013-02-13 71 views
0

我試圖在Django中爲用戶實現搜索功能。Django:在Django中從不同的表中搜索

我可以使用Q進行一個表格搜索,但這裏的scenerio是不同的。

這裏是我的模型:

Class Profile(models.Model)   
    name = models.OnoeToOneField(User) 
    category = models.ForeignKey(Category) 
    Tags = models.ForeignKey(Tags) 

class Category(models.Model) 
    name = models.Charfield(max_length = 100) 
    sub_cat = models.ForeignKey(SubCategory) 

我想尋找誰屬於categoey和/或標籤

用戶,但我無法找到一個方法來做到這一點。我不想使用Haystack或者Whoosh。

請給我建議一些簡單的方法來實現這一點。

+0

Profile.objects.filter(category__pk=27) 

與子類別名稱篩選:

Profile.objects.filter(category__name__iexact='category 1') 

與類別ID過濾器:

與類別名稱篩選「現在要搜索名稱爲f的用戶或者一個類別和一個標籤。「你能重新翻譯一下嗎? – jpic 2013-02-13 08:15:46

+0

chack更新請 – masterofdestiny 2013-02-13 08:17:16

回答

1

你試過這樣的查詢集嗎?

User.objects.filter(
    Q(profile__category__name__icontains=search_string) | 
    Q(profile__Tags__name__icontains=search_string) 
).distinct() 

查看complex lookups with Q objects瞭解詳情。

請注意,我使用distinct()來消除重複結果,因爲可以選擇相同的用戶有兩個原因(每個對應一個Q對象)。 (當然,你應該改編Tags__name,這是爲了舉例,但我沒有標籤模型的來源)。

+0

謝謝,我現在就試試。但是,請你能建議我一些好的大數據搜索模塊 – masterofdestiny 2013-02-13 09:03:09

+0

我使用乾草堆:) – jpic 2013-02-13 09:52:53

1

這其實很簡單:

Profile.objects.filter(category__sub_cat__name__iexact='exact sub category name')