2014-01-17 143 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对象,则必须先于任何关键字参数的定义。