Пытаюсь обновить мою корзину с помощью django, но не знаю, что я делаю не так.
Django version = 4.0.4
Python == 3.9.12
os = osx
вот мой шаблон корзины, где я использую тег шаблона для получения доступа к данным экземпляра заказа для его рендеринга
<div class="block-cart action">
<a class="icon-link" href="{% url 'core:cart' %}">
<i class="flaticon-shopping-bag"></i>
<span class="count">{{ request.user|cart_item_count }}</span>
<span class="text">
<span class="sub">Carrito:</span>
Gs.{{ request.user|cart_total_count }} </span>
</a>
<div class="cart">
<div class="cart__mini">
<ul>
<li>
<div class="cart__title">
<h4>Carrito</h4>
<span>( {{ request.user|cart_item_count }} Item en el carrito)</span>
</div>
</li>
{% if request.user|cart_total_items != 0 %}
{% for order_item in request.user|cart_total_items %}
<li>
<div class="cart__item d-flex justify-content-between align-items-center">
<div class="cart__inner d-flex">
<div class="cart__thumb">
<a href="product-details.html">
<img src="{{ order_item.item.image.url }}" alt="">
</a>
</div>
<div class="cart__details">
<h6><a href="product-details.html">{{ order_item.item.title }}</a></h6>
<div class="cart__price">
<span>Gs. {% if order_item.item.discount_price|stringformat:".0f" %} {{ order_item.item.discount_price|stringformat:".0f" }}
{% else %} {{ order_item.item.price|stringformat:".0f" }}
{% endif %} x {{order_item.quantity}}</span>
</div>
</div>
</div>
<div class="cart__del">
<a href="{% url 'core:remove-from-cart-from-home' order_item.item.id%}"><i class="fal fa-times"></i></a>
</div>
</div>
</li>
{% endfor %}
{%else%}
{% endif %}
<li>
<div class="cart__sub d-flex justify-content-between align-items-center">
<h6>Subtotal</h6>
<span class="cart__sub-total">Gs.{{ request.user|cart_total_count }}</span>
</div>
</li>
<li>
<a href={% url 'core:cart' %} class="wc-cart mb-10">Ver Carrito</a>
<a href={% url 'core:checkout' %} class="wc-checkout">Finalizar Compra</a>
</li>
</ul
</div>
</div>
здесь находится тег пользовательского шаблона
@register.filter
def cart_item_count(user):
if user.is_authenticated:
qs = Order.objects.filter(user=user, order_completed=False)
qs = qs.last()
if qs.order_completed == False:
print(qs.order_completed)
return qs.items.count()
else:
return 0
return 0
вот моя модель
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
company_name = models.CharField(max_length=100, null=True, blank=True)
items = models.ManyToManyField(OrderItem)
start_date = models.DateTimeField(auto_now_add=True)
direction = models.CharField(max_length=100, blank=True, null=True)
city = models.CharField(max_length=200, null=True, blank=True)
phone = models.CharField(max_length=200, null=True, blank=True)
received = models.BooleanField(default=False)
order_completed = models.BooleanField(default=False)
class Meta:
verbose_name = "Pedido"
verbose_name_plural = "Pedidos"
ordering = ['-id']
def __str__(self):
return self.user.username
def get_total(self):
total = 0
for order_item in self.items.all():
total += order_item.get_total_item_price()
return total
Здесь мой вид кассы
class CheckoutView(View):
def get(self, *args, **kwargs):
try:
order = Order.objects.get(user=self.request.user, order_completed=False)
form = CheckoutForm()
context = {
'form': form,
'order': order,
}
order.save()
return render(self.request, "v2/checkout.html", context)
except ObjectDoesNotExist:
messages.info(self.request, "Usted no tiene un pedido activo")
return redirect("core:checkout")
def post(self, *args, **kwargs):
form = CheckoutForm(self.request.POST or None)
try:
order = Order.objects.get(user=self.request.user, order_completed=False)
if form.is_valid():
order = form.save(commit=False)
order.order_completed = True
order.user = self.request.user
order.save()
return HttpResponseRedirect('success')
except ObjectDoesNotExist:
messages.warning(self.request, "Usted no posee ningún pedido aun")
return redirect("core:cart")
return HttpResponseRedirect('v2/checkout')
что я пытаюсь сделать, когда я делаю пост форму из оформления заказа, я сохраняю заказ, меняю свойство order_completed на True, перенаправляю на страницу succes, но даже если перезагрузить страницу, значение моей корзины все еще с последним заказом, даже если попытаться отфильтровать его по этому свойству
вот мой интерфейс администратора из моей модели заказа перед отправкой POST

Вот после POST
здесь, когда я перехожу на страницу успешного перенаправления, предполагается, что я должен увидеть свою корзину пустой из-за тега шаблона фильтра, но мой заказ все еще со старой информацией
даже если я перезагружаю очищая кэш все равно не так, что я делаю не так?, что является правильным способом сделать это?

