gpt4 book ai didi

sql - 如果值为空,Postgresql 忽略过滤条件

转载 作者:行者123 更新时间:2023-12-04 10:32:47 26 4
gpt4 key购买 nike

我将以下三个变量传递给查询 A,B and C .

A、B 和 C 可以采用任何值,包括 null。

当我运行下面的查询集时,如果 A、B 或 C 中的值为空,它应该忽略条件

queryset = User.objects.values().filter(A_name=A, B_name=B, C_name =C)

例如,如果 C 值传入 null 那么查询应该像
queryset = User.objects.values().filter(A_name=A, B_name=B)

如果 C 和 A 值传入 null 那么查询的行为应该像
queryset = User.objects.values().filter(B_name=B)

我不想写所有 9 种组合并编写查询。有什么办法可以轻松做到吗?

最佳答案

您可以将参数保留为 dict 并仅将其中不等于 None 的参数发送到 filter() 方法:

arguments = {"A_name": A, "B_name": B, "C_name": C}
arguments_without_null = {k: v for k, v in arguments.items() if v is not None}
queryset = User.objects.values().filter(**arguments_without_null)

关于sql - 如果值为空,Postgresql 忽略过滤条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60332175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com