Как не вызывать два раза get_context_data в templatetags django?
Из-за takes_context=True
в template tags
, функция get_context_data
вызывается два раза, соответственно два раза идет обращение к базе. Как сделать так, чтобы я мог использовать url_replace без двух обращений к базе?
views
class MoneyHomeView(ListView):
model = Money
paginate_by = 10
template_name = 'money/money_list.html'
context_object_name = 'money'
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
getQ = self.getMoneyQuery()
paginator = Paginator(getQ, self.paginate_by)
page = self.request.GET.get('page')
orders_page = paginator.page(page)
return context
def getMoneyQuery(self):
return Money.objects.all()
templatetags.py
@register.simple_tag(takes_context=True)
def url_replace(context, **kwargs):
query = context['request'].GET.copy()
for kwarg in kwargs:
try:
query.pop(kwarg)
except KeyError:
pass
query.update(kwargs)
return mark_safe(query.urlencode())