我写了一个类,它检查输入中的4个参数,并在输出中显示一个结果列表。 只有一个这个参数是必需的,因此我有7个if - else嵌套块。 我想指定所述的条件正常工作。如何避免python中的if-else块太多
,我很困惑,如果有写这一个更聪明的办法:
if cd['subject'] is None:
if cd['school'] == '':
if cd['price']:
files = File.objects.filter(name__contains=cd['name'], price = '0.0')
else:
files = File.objects.filter(name__contains=cd['name'])
else:
if cd['price']:
files = File.objects.filter(name__contains=cd['name'], school = cd['school'], price = '0.0')
else:
files = File.objects.filter(name__contains=cd['name'], school = cd['school'])
else:
if cd['school'] == '':
if cd['price']:
files = File.objects.filter(name__contains=cd['name'], subject = cd['subject'], price = '0.0')
else:
files = File.objects.filter(name__contains=cd['name'], subject = cd['subject'])
else:
if cd['price']:
files = File.objects.filter(name__contains=cd['name'], school = cd['school'], subject = cd['subject'], price = '0.0')
else:
files = File.objects.filter(name__contains=cd['name'], school = cd['school'], subject = cd['subject'])
return render(request, 'search.html', {'files': files, 'request': request})
请修复您的代码缩进;为什么混合'None',空字符串''''和布尔coersion('如果')在比较? –
alko
因为变量来自Django表单并且是不同的表单字段。 我忘了说,条件工作得很好,我想知道是否有一个更聪明(或更优雅,如果你可能)的方式说同样的事情。 – Higure
非常奇怪'cd ['price']'处理 – alko