2014-01-17 59 views
4
g = Goal.objects.filter(Q(title__contains=term) | Q(desc__contains=term)) 

如何添加到我的filteruser=request.user在Django中的Q對象查詢集

這不起作用:

g = Goal.objects.filter(user=request.user, Q(title__contains=term) | Q(desc__contains=term)) 

型號:

class Goal(models.Model): 
    user = models.ForeignKey(User) 
    title = models.CharField(max_length=255) 
    desc = models.TextField() 
+1

請先顯示您的模型。 – alecxe

+0

@alecxe我更新了問題 – user3207076

+0

不要只說「這不行」,請包含回溯。在這種情況下,回溯是'SyntaxError:關鍵字arg'之後的非關鍵字arg,它正確地解釋了發生了什麼。 – Alasdair

回答

8

關鍵字參數(user=request.user)一定要來非關鍵字參數(您的問與答對象)。

無論是在你的過濾器切換順序:

Goal.objects.filter(Q(title__contains=term) | Q(desc__contains=term), user=request.user) 

或鏈上的兩個filter()電話一起

Goal.objects.filter(user=request.user).filter(Q(title__contains=term) | Q(desc__contains=term)) 
1
g = Goal.objects.filter(Q(user__iexact=request.user) & Q(title__contains=term) | Q(desc__contains=term)) 

使用&到位的Python和運營商

0

根據Django的docs

查找函數可以混合使用Q對象和關鍵字參數。但是,如果提供了Q對象,則必須先於任何關鍵字參數的定義。