我的数据库中有三列(var1,va2和var3)。使用通配符在Django中执行queryset筛选器
在html页面上,用户可以输入var1,var2或var3的值或三个变量的组合(例如仅为var1和var3或var2和var3提供数据)。
我的查询搜索的是:
Rule.objects.filter(var1=user_var1, var2=user_var2, var3=user_var3,)
如果用户对所有三个变量进入价值,这是非常简单的。
如果用户输入两个或一个变量的值,我希望queryset过滤器只匹配用户输入值的列。例如:用户输入了var2和var3的数据。生成的搜索将是:
Rule.objects.filter(var2=user_var2, var3=user_var3,)
但是,有没有办法让所有的三个变量滤波代码等类似的东西:应用
if user_var1 = null, then user_var1=[wildcard or all]
Rule.objects.filter(var1=user_var1, var2=user_var2, var3=user_var3,)
为什么你先做qs然后过滤。为什么不直接通过字典过滤呢? –
@HC你可以,我只是想更有说服力。查看更新的代码。谢谢! –
谢谢。我认为可能会让代码运行得更快。谢谢! –