django - 使用 Django reduce(or_) - 如何将结果为 0 的不匹配查询存储在变量中
问题描述
我有一个函数,它从数据列表中获取用户的输入,并在我的数据库中搜索与用户输入匹配的任何项目,并返回我的数据库中的所有结果:
results = results.filter(
reduce(or_, (Q(name__icontains=itm.strip()) for itm in query))
)
我想处理我的数据库中不存在用户输入的情况。由于results
fitlers 已经存在,我如何检查上述代码是否未能找到至少一个匹配的查询结果,并将该查询存储在变量中?例如,如果在results
我的数据库中查询以下列表:['one', 'two', 'thee'],假设 'thee' 不在我的数据库中,但其他两个在我的数据库中,我想存储字符串“thee” " 在一个变量中以供以后使用
解决方案
您可以简单地评估results
为布尔值:
if not results:
print('No match found.')
来自QuerySet
的文档:
bool()
. 在布尔上下文中测试 aQuerySet
,例如 usingbool()
、 或语句or
,将导致执行查询。如果至少有一个结果,则为,否则为。例如:and
if
QuerySet
True
False
if Entry.objects.filter(headline="Test"): print("There is at least one Entry with the headline Test")
推荐阅读
- python - type(list[0]) 返回 pynput.keyboard._win32.KeyCode
- reactjs - 不可变助手更新数组中对象中的值
- selenium - ChromeDriver 版本适用于 Chrome 版本 69.0.3497.81,同时将 selenium 与 Python 一起使用
- html - 以及遵循 svg 多边形轮廓的 svg 路径
- php - 如何让我的系统更安全?我可以看到一些入侵者试图破解我的 Web 应用程序
- javascript - JavaScript 对象获取子对象中属性的值
- python-3.x - 使用 python notebook 进行网页抓取
- spring-boot - Springboot身份验证问题
- html - 如果我添加此代码, ::after 缩放将从更高的一些像素开始
- python - 重命名文件夹中的文件,通过更改文件名前面的前缀,取决于文件夹中的文件数量