g = Goal.objects.filter(Q(title__contains=term) | Q(desc__contains=term))
如何向filter
添加user=request.user
?
这不起作用:
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()
答案 0 :(得分:10)
关键字参数(user=request.user
)必须在非关键字参数(您的Q对象)之后。
切换过滤器中的顺序:
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 :(得分:1)
g = Goal.objects.filter(Q(user__iexact=request.user) & Q(title__contains=term) | Q(desc__contains=term))
使用&代替Python和运算符
答案 2 :(得分:0)
根据django docs。
查找函数可以混合使用Q对象和关键字参数。但是,如果提供了Q对象,则它必须位于任何关键字参数的定义之前。