python - 在 django 查询集中使用 Q 对象进行 OR 条件时发生错误

标签 python django

我想在 django 中使用带有 OR 条件的过滤器。 为此我想使用 Q 对象。 我的代码是这样的

def product(request):
    try:

        proTitle = request.GET.get('title')
        ProDescription = request.GET.get('description')


    except:
        pass


    list0 = []
    result = Product.objects.filter(Q(title__contains=proTitle ) | Q(description__contains=ProDescription ) )

    for res in result:

        list0.append(res.project_id)
    data ={'title result':list0}
    return HttpResponse(json.dumps(data))



return HttpResponse(json.dumps(data), content_type='application/json')

当传递所有值时,即proTitle,ProDescription 它工作正常。 如果任何值变为 None ,则会遇到错误Cannot use None as a query value` 为什么当我在查询集中使用 OR 运算符时会发生此错误

我也试试这个

结果 = Project.objects.filter(title__contains=proTitle) | Project.objects.filter(description__contains=ProDescription)

但是发生了同样的错误 我无法理解到底是什么问题

最佳答案

您可以将 get 方法的默认值设置为 None 以外的其他值,例如空字符串:

proTitle = request.GET.get('title', '')
ProDescription = request.GET.get('description', '')
funAria = request.GET.get('funAria', '')
femaleReq = request.GET.get('femaleReq', '')

然而,当使用__contains时,这可能会返回数据库中的所有结果。

否则,您可能会构建丢弃所有 None 值的 Q 函数。

以此为指导:How to dynamically compose an OR query filter in Django?

关于python - 在 django 查询集中使用 Q 对象进行 OR 条件时发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39901266/

相关文章:

python - python for循环同时迭代文件和数组

python - 正则表达式匹配可能包含 '' ' '' '' ' 的单引号字符串

python - 为什么在 pyTorch 强化学习示例的 nn.Module 中返回 self.head(x.view(x.size(0), -1))

python - 将线性回归的结果填充到数据框中

Django、ModelForms、User 和 UserProfile - 不散列密码

django - 使用 django-filter 查询多个字段,每个字段都有一个自定义方法

python - 使用 Python 条件和 Django 返回进行 DRY

python - 如何用打包版本替换从源安装的 Python?

python - 如何在 Django 中保存内联表单集模型?

python - 如何在开发中为 Django 提供 CSS?