Почему django cart template_tags выдает сообщение об ошибке object has no attribute 'is_authenticated'

register = template.Library()
@register.filter

def cart_item_count(user):
    if user.is_authenticated:
        qs = Order.objects.filter(user=user, ordered=False)
        if qs.exists():
            return qs[0].item.count()
    return 0

Шаблон использует в качестве параметра user, поэтому вам нужно будет работать с объектом User, который вы фильтруете, например, вошедший в систему пользователь с:

{{ user|cart_item_count }}

В своем фильтре шаблонов вы можете повысить эффективность, работая с:

register = template.Library()

@register.filter
def cart_item_count(user):
    return Item.objects.filter(order__user_id=user.pk, order__ordered=False).count()

Однако, возможно, имеет смысл работать с тегом custom template tag [Django-doc].

Вернуться на верх