Я пытаюсь извлечь некоторые записи (о журналах) из базы данных, чтобы создать таблицу со статистикой. Добыча производится по времени и названию магазина. Вот код, который я в настоящее время, но я предполагаю, что это не DRY достаточно по двум причинам:Django. ORM filter по аргументу ключевого слова function
def get_statistic(date__gte=None, date__lte=None, name=None):
magazines_qs = Magazines.objects.all()
#1 move filters to "for"
#2 get rid of "if" statement (may be by setting default values which
# makes filter equal to .all() method)
if date__gte:
magazines_qs = magazines_qs.filter(date__gte=date__gte)
if date__lte:
magazines_qs = magazines_qs.filter(date__lte=date__lte)
if offer:
magazines_qs = magazines_qs.filter(name=name)
Я полагаю, что можно получить что-то вроде:
def get_statistic(date__gte=None, date__lte=None, name=None):
magazines_qs = Magazines.objects.all()
for filter in arguments()
magazines_qs = magazines_qs.filter(filter)
Но я не секрет производства.