Я работаю над проектом электронной коммерции Django и следил за учебным пособием, а затем решил переделать его самостоятельно без учебника, но я застрял в небольшой проблеме, в которой я не понимаю логики.
Когда пользователь добавляет товар в корзину, я хочу, чтобы он отражал нет. элементов, которые отображаются на значке корзины на панели навигации, но я получаю Invalid filter: 'cart_item_count'
Вот мой Item model.py
class Item(models.Model):
title = models.CharField(max_length=100)
image = models.ImageField(blank=False, upload_to=upload_design_to)
class OrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
ordered = models.BooleanField(default=False)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
variation = models.ManyToManyField(Variation)
Имя приложения store
, вот что я сделал в этом уроке
В приложение добавлена новая папка с именем templatetags
, а внутри папки тегов шаблона создан файл с именем cart_template_tags
а вот что внутри него:
from django import template
from store.models import Order
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].items.count()
return 0
Мой вопрос: как исправить эту ошибку, и я хочу понять логику использования cart_item_count
в качестве фильтра?
Есть ли более простой способ сделать это?
Спасибо
@ha-neul ничего не произошло та же ошибка
у вас есть {% load cart_template_tags %} в вашем шаблоне?
@ha-neul да, вы можете добавить это как ответ, спасибо
Согласно документу django о пользовательских тегах шаблонов, вам необходимо
{% load cart_template_tags %}
в свой шаблон.
попробуйте перезапустить сервер.