Zor*_*rig 5 python django query-optimization django-rest-framework
我正在尝试根据以下内容进行过滤queryparams.
如何减少代码行:
if fridge == 'true' and toilet == 'true' and side_window == 'true':
queryset = queryset.filter(toilet=True, fridge=True, sun_side_window=True)
elif fridge == 'true' and toilet == 'true':
queryset = queryset.filter(toilet=True, fridge=True)
elif fridge == 'true' and side_window == 'true':
queryset = queryset.filter(sun_side_window=side_window.capitalize(), fridge=fridge.capitalize())
elif toilet == 'true' and side_window == 'true':
queryset = queryset.filter(sun_side_window=side_window.capitalize(), toilet=toilet.capitalize())
elif fridge == 'true':
queryset = queryset.filter(fridge=fridge.capitalize())
elif toilet == 'true':
queryset = queryset.filter(toilet=toilet.capitalize())
elif side_window == 'true':
queryset = queryset.filter(sun_side_window=True)
Run Code Online (Sandbox Code Playgroud)
创建一个像这样的函数怎么样
def q(**kwargs):
for k in kwargs:
if kwargs[k] == 'true':
kwargs[k] = True
return queryset.filter(**kwargs)
Run Code Online (Sandbox Code Playgroud)
您只需要以某种方式映射sun_side_window或side_window删除它。