Django过滤MySql列中的任何值

时间:2014-10-27 13:44:01

标签: python django django-models

我希望能够将此过滤器用于“特定”或“空”或“任何值”方案

#  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=*    

2 个答案:

答案 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'.')