Как я могу зарефакторить код?
def dashboard(request):
if request.user.is_superuser:
usr = request.user
inform = Products.objects.filter()
urls = cart.objects.filter()
return render(request, 'dashboard.html', {'urls': _paginator(request, urls), 'inform': inform})
else:
usr = request.user
inform = Products.objects.filter()
urls = cart.objects.filter(user=usr)
_paginator(urls, request)
return render(request, 'dashboard.html', {'urls': _paginator(request, urls)})
Подскажите, каким образом я могу правильно сделать рефакторинг, при условии, что фильтры urls разные?
Ответы (1 шт):
Автор решения: digital-mag
→ Ссылка
Если вы хотите чуть сократить количество строчек кода, то можно так:
def dashboard(request):
urls = cart.objects.filter(**({user: request.user} if request.user.is_superuser else {}))
return render(
request,
'dashboard.html',
{
'urls': _paginator(request, urls),
'inform': Products.objects.all() if request.user.is_superuser else None
}
)
но это может несколько затруднить отладку