1 回答
TA贡献1802条经验 获得超6个赞
代替 :
{% if product in Cart.products.all %}
<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Add to Cart</a>
{% else %}
<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Remove from Cart</a>
{% endif %}
你可以这样尝试:
{% if not product.cart_set.exists %}
<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Add to Cart</a>
{% else %}
<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Remove from Cart</a>
{% endif %}
我用来reverse relation
检查该产品是否存在任何购物车。但它会检查该产品是否在任何购物车中。这不应该是正确的,因为它应该检查产品是否在特定的购物车中。
现在,如果您想更具体地了解该产品是否存在于某个购物车中,我建议在视图中进行此计算。例如,在您的产品视图中,您可以这样做:
from django.db.models import Case, When, Value, BooleanField
cart = Cart.objects.first()
products = Product.objects.annotate(in_cart=Case(When(cart__pk=cart.id,then=Value(True)),default=Value(False),output_field=BooleanField()))
return render(request, template.html, context={'products':products})
并签入模板:
{% if not product.in_cart %}
<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Add to Cart</a>
{% else %}
<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Remove from Cart</a>
{% endif %}
我在这里使用 djangoconditional expression
检查产品是否在某个购物车中。
也许您的代码中出现了更简单的错误:
在你的逻辑中添加一个notif
else
:
{% if not product in Cart.products.all %}
<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Add to Cart</a>
{% else %}
<a href="{% url 'add-to-cart' product.slug %}" class="btn btn-primary">Remove from Cart</a>
{% endif %}
- 1 回答
- 0 关注
- 69 浏览
添加回答
举报