我希望能够将此过滤器用于“特定”或“空”或“任何值”方案
# 3 scenarios for the third field : Col3
# Query for a specific value
sample = table.objects.filter(Col1=343, Col2=545, Col3=656)
# Query for NULL value
sample = table.objects.filter(Col1=343, Col2=545, Col3=None)
# Query for any value
sample = table.objects.filter(Col1=343, Col2=545, Col3=???)
特定和NULL场景由精确值处理,如656和python中的“None”。 我们如何处理上述任何值scnearios?
想象一下3个下拉框,我们可以根据这个框查询数据库。
我的问题与此类似,但具体针对Django
原始的sql特定问题在这里:How do you query an int column for any value?,在我的情况下coloumn可以是任何类型
结果查询可能如下所示:
// Query for a specific value
select Col1,Col2,Col3 from table where Col1=343, Col2=545, Col3=656
// Query for NULL value
select Col1,Col2,Col3 from table where Col1=343, Col2=545, Col3 IS NULL
// Query for any value
select Col1,Col2,Col3 from table where Col1=343, Col2=545, Col3=*
答案 0 :(得分:0)
我认为您应该能够省略Col3
过滤器,如下所示:
sample = table.objects.filter(Col1=343, Col2=545)
编辑:您是否尝试将所有这些案例压缩成一个语句?
我对Django中的QuerySets的细微之处不太熟悉,给你一个单行,但是,将你的3个下拉框示例更进一步......如果你的下拉包含了什么'无& #39;和任何'除了常规的价值清单?这样您就可以根据提供的参数选择查询。
if param3 == 'None':
sample = table.objects.filter(Col1=343, Col2=545, Col3=None)
elif param3 == 'Any':
sample = table.objects.filter(Col1=343, Col2=545)
else:
sample = table.objects.filter(Col1=343, Col2=545, Col3=param3)
答案 1 :(得分:0)
您可以使用以下语句:
# Query for any value
sample = table.objects.filter(Col1=343, Col2=545, Col3__regex = r'.')