Найти - Пользователи
Полная версия: необязательный параметр...
Начало » Python для новичков » необязательный параметр...
1
whitehat
Ниже кусок из довольно объёмного кода, который приходится дублировать из-за того, что я не понимаю, как можно сделать включение одного из параметров необязательным
if profile_type == 'D':
            q_table = UserDownloads.objects.filter(date__lt = end_day, username__in = userlist)
           ...
elif profile_type == 'A':
           ...
else:
            q_table = UserDownloads.objects.filter(date__lt = end_day)
В примере по одной строке, а их несколько десятков, очень напрягает править сначала для одного profile_type, потом для второго, потом для третьего… Есть ли способ как-то записать этот код одной строкой, что бы username__in появлялся только по profile_type == ‘D’?
Спасибо
kmike
если это django, то можно так:

q_table = UserDownloads.objects.filter(date__lt = end_day)
if profile_type == 'D':
    q_table = q_table.filter(username__in = userlist)

Еще можно так (хоть django, хоть не django):

filters = dict(date__lt=end_day)
if profile_type == 'D':
    filters['username__in'] = userlist
q_table = UserDownloads.objects.filter(**filters)
agalen
q_table = UserDownloads.objects.filter(date__lt = end_day, **( { "username__in": userlist } if profile_type == 'D' else {} ) )
whitehat
Спасибо большое! :D
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB