2016-10-05 119 views
0

我想在過濾對象數據時在django中使用OR條件的過濾器。django過濾條件或條件

我有一個類的對象,我有3或4個字段的基礎上,我想在Django中用OR條件過濾數據。

例如。

Obj = Books.objects.filter(title=title or price=price or description=description or author=author) 

我認爲這不是執行過濾器的正確方法。

什麼是使用OR條件在我的Django過濾

回答

2
from django.db.models import Q 

Obj = Books.objects.filter(Q(title=title) | Q(price=price) | Q(description=description) | Q(author=author)) 

文檔的正確方法:http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects 來源:https://stackoverflow.com/a/739922/4808939

+0

這是工作,如果我通過了所有filed.If我通過一個或兩個它'不能使用無作爲查詢值' – vikrant

+0

在上面的示例代碼中,如果我只傳遞標題,它會給我錯誤無法將無作爲查詢值使用 – vikrant

+0

@vikrant是否允許空白查詢值?如果是這樣,你應該在將它們傳遞給Q對象之前對它們進行消毒。像這樣:'title = title或者「''。如果它是'None',這將用一個空字符串取代該值。 如果你不關心空白值,那麼你應該有條件地建立你的OR'ed在一起的查詢。 – wholevinski