【问题标题】:Searching PostgreSQL with Django and passing a null or empty string value使用 Django 搜索 PostgreSQL 并传递一个 null 或空字符串值
【发布时间】:2018-05-12 18:00:38
【问题描述】:

我正在搜索 Postgres,如下所示:

search_term = self.request.GET.get('search')
queryset = Package.objects.filter(package_description__search=search_term)

如果 search_term 是 None 或空字符串,我如何让它返回所有对象?

我尝试将 search_term 设置为 None 或空字符串。

【问题讨论】:

  • if else 语句可以做到,也许你只需要一个查询就可以做到
  • 所以没有什么可以传递让查询忽略查询?
  • 据我所知,没有!等待其他答案,与此同时,我正在努力

标签: django postgresql django-queryset


【解决方案1】:

Django 仅在您尝试获取查询项时执行查询。所以你可以简单地添加if 并结合你的查询

search_term = self.request.GET.get('search')
queryset = Package.objects.all()
if search_term:
    queryset = queryset.filter(package_description__search=search_term)

链接到文档querysets-are-lazy谢谢@bdoubleu

【讨论】:

  • 第二行的“all()”将导致查询运行。在“if”块完成后使用 all()
  • @ChrisCurvey 是正确的,querysets are lazy 所以在返回或打印之前不会对其进行评估。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 2020-01-27
  • 1970-01-01
  • 2020-01-27
相关资源
最近更新 更多