2010-08-03 37 views
0

我有一個數據列表。該數據模型對於類別模型和關鍵字模型都有多對多的字段。數據模型本身有一個名稱和說明。數據可以有多個類別和關鍵字。在Django中,正確地創建一個包含多個類別,多個標籤和搜索的查詢集?

在前端,用戶可以選擇多個類別來過濾數據或進行搜索...因此,顯示的數據應該是任何具有所選類別的數據。如果'測試數據1'具有類別'A'並且'測試數據2'具有類別'B',則如果用戶選擇查看類別'A'和'B',則將顯示兩條數據。搜索的目的是在標題,描述和與數據相關的關鍵字中搜索數據,如果選擇了任何類別,它將搜索在查詢類別之後留下的數據。

我不是Django的專家,我在這裏試圖找出最好的方法來做到這一點。我不想訴諸使用乾草堆等東西,因爲我的數據真的很簡單。我發現在對象上執行.filter()基本上給了我一個底層SQL的AND,這對於類別的工作方式來說並不理想。看來我需要某種OR ...也許?

前端的類別選擇是用表單完成的,所以返回的數據基本上是選擇的類別列表['A','B','C'] ...是否不存在我可以把它放到Django的查詢集中,並返回所有具有一個或任何這些類別的數據?

非常感謝!

回答

1

不確定這裏是什麼意思。您可以嘗試的東西沿着這些路線:

from django.db.models import Q 

query = 'fun' 
books = Fun.objects.filter(Q(categories__id__in=[1,2,3]), 
        Q(name__icontains=query) | \ 
        Q(description__icontains=query) | \ 
        Q(keywords__title__icontains=query)) 

http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects

+0

讀這篇文章,然後做更多的研究以關閉此之後,它真的幫了我。謝謝。我只是需要看到一個像這樣的工作例子來解決這個問題。謝謝! – littlejim84 2010-08-06 15:30:22