2013-02-23 95 views
5

我想比較我的查詢搜索到我所有的模型領域,但我不知道如何在多個領域做到這一點。如何獲得與Django過濾器icontains多個字段

這是我的代碼。

expense = Expense.objects.filter(user=request.user.id).order_by('date') 

q = request.GET['q'] 
result = expense.filter(name__icontains=q) 

我要籤:nameamountcategory

在此先感謝

+0

如果amount是一個整數,您可能不會想要使用icontains,而是使用常規查找。 – Udi 2013-02-23 20:24:34

回答

11

從Django文檔:

「關鍵字參數查詢 - 過濾器(),等 - 如果你需要執行更復雜的查詢(例如使用OR語句的查詢),你可以使用Q對象。「

from django.db.models import Q 
expense.objects.filter(
    Q(name__icontains=q) | Q(amount__icontains=q) | Q(category__icontains=q) 
) 

我不確定您的模型中的金額和類別的類型,所以icontains可能不適用於它們。

參見this link

+1

你應該使用過濾器而不是get,因爲只返回一個對象。 – UnLiMiTeD 2013-02-23 20:27:06

+0

@UnLiMiTeD感謝您的糾正。 – jurgenreza 2013-02-23 20:28:45

+0

完美,非常感謝你 – yaniv14 2013-02-23 20:38:47

0

這個作品完美像Jurgenreza回答。

from django.db.models import Q 
expense.objects.filter(
    Q(name__icontains=q) | Q(amount__icontains=q) | Q(category__icontains=q) 
)