Обновление количества товаров в корзине покупок не работает должным образом

#python #django

#python #django

Вопрос:

Я работаю над проектом электронной коммерции Django, и я следил за учебным пособием, а затем решил переделать его самостоятельно без учебника, но я застрял в небольшой проблеме, логику которой я не понимаю.

Когда пользователь добавляет товар в корзину, я хочу, чтобы он отражал нет. товаров, которые отображаются на значке корзины на панели навигации, но я получаю Invalid filter: 'cart_item_count'

Вот мой товар 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 в качестве фильтра?

Есть ли более простой способ сделать это?

Спасибо

Комментарии:

1. попробуйте перезапустить сервер.

2. @ha-neul ничего не произошло та же ошибка

3. есть ли у вас{% load cart_template_tags %} в вашем шаблоне?

4. @ha-neul да, вы можете добавить это в качестве ответа, спасибо

Ответ №1:

Согласно документу django о пользовательских тегах шаблонов, вам необходимо

  1. добавьте {% load cart_template_tags %} свой шаблон.
  2. перезапустите сервер, чтобы заставить пользовательские теги работать.