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 關注
- 103 瀏覽
添加回答
舉報