Как увеличить счетчик в шаблонах django
Я пытаюсь получить общее количество нарушений для каждого нарушителя. Счетчик не увеличивается. ( {{ a|add: "1" }}) Он выводит 1 1 1 вместо общего числа 3. Пожалуйста, помогите.
{% for infringer in page_obj %} <tr> <td>{{infringer.id}}</td> <td>{{infringer.created|date:"d M, Y"}}</td> <td>{{infringer.name}}</td> <td>{{infringer.brand_name}}</td> <td>{{infringer.status}}</td> <td> {% with a=0 %} {% for i in inc %} {% if infringer.id == i.infringer.id %} {{ a|add:"1" }} {% endif %} {% endfor %} {% endwith %}
views.py
@login_required(login_url='login') def infringerlist(request): q = request.GET.get('q') if request.GET.get('q') != None else '' ings= Infringer.objects.filter(Q(created__icontains=q) | Q(id__icontains=q) | Q(status__name__icontains=q) | Q(brand_name__icontains=q) | Q(name__icontains=q), customer=request.user.customer,) paginator = Paginator(ings, 10) page_number = request.GET.get('page') page_obj = paginator.get_page(page_number) inc = Infringement.objects.filter(customer=request.user.customer) context= {'page_obj': page_obj, 'inc': inc} return render(request,'base/infringers_list.html', context)
Шаблоны не должны иметь бизнес-логику. Они также не должны изменять состояние. Они должны просто передавать данные.
Вы можете подсчитать количество нарушений, а затем передать его в контекст:
@login_required(login_url='login')
def infringerlist(request):
q = request.GET.get('q') if request.GET.get('q') != None else ''
ings = Infringer.objects.filter(
Q(created__icontains=q)
| Q(id__icontains=q)
| Q(status__name__icontains=q)
| Q(brand_name__icontains=q)
| Q(name__icontains=q),
customer__user=request.user,
)
paginator = Paginator(ings, 10)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
infrigments = Infringement.objects.filter(customer__user=request.user).count()
return render(
request,
'base/infringers_list.html',
context={'page_obj': page_obj, 'infrigments': infrigments},
)
и визуализировать его с помощью {{ infrigments }}
.