입력에 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})
코드 들여 쓰기를 수정하십시오. compulsion에'None', 빈 문자열'' ''및 부울 값 ('')을 왜 혼합하고 있습니까? –
alko
변수는 Django 폼에서 왔고 다른 폼 필드이기 때문에. 나는 똑같은 말을하는 더 똑똑한 (또는 좀 더 우아한) 방법이 있는지 궁금 해서요. – Higure
매우 이상한'cd [ 'price']'취급 – alko