В файле html я пытаюсь отобразить кнопку «Удалить». Если я просто распечатаю {{combo}}
, он отобразится. Но если я попытаюсь запросить его на основе модели тележки, кнопка не отобразится. Я также пробовал запросить его вот так {% if combo in cart.combo_item.combo.all %}
, но это не сработало.
update-cart.html
<form method="POST" action="{% url 'carts:combo_add_to_cart' %}" class="form">
{% csrf_token %}
<input type="hidden" name="combo_id" value="{{ combo.id }}">
<button type="submit" class="btn btn-success">Add to Cart</button>
{% if combo in cart.combo_item.all %}
<button type="submit" class="btn btn-success">Remove?</button>
{% endif %}
</form>
{{combo}}
cart.models
class ComboCartItem(models.Model):
user = models.ForeignKey(User, null=True, blank=True, on_delete=models.CASCADE)
combo = models.ForeignKey(Combo, blank=True, null=True, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
ordered = models.BooleanField(default=False)
def __str__(self):
return f"{self.quantity} of {self.combo.combo}"
class Cart(models.Model):
user = models.ForeignKey(User, null=True, blank=True, on_delete=models.CASCADE)
combo_item = models.ManyToManyField(ComboCartItem, blank=True, null=True)
addon_item = models.ManyToManyField(AddonCartItem, blank=True, null=True)
ordered = models.BooleanField(default=False)
cart_total = models.DecimalField(default=0.00, max_digits=100, decimal_places=2)
objects = CartManager()
def __str__(self):
return str(self.id)
combo.models
class Combo(models.Model):
title = models.CharField(max_length=120)
combo_regular_price = models.DecimalField(decimal_places=2, max_digits=10, default=0.00)
combo_sale_price = models.DecimalField(decimal_places=2, max_digits=10, default=0.00)
timestamp = models.DateTimeField(auto_now_add=True)
slug = models.SlugField(blank=True, null=True)
active = models.BooleanField(default=True)
objects = ComboManager()
def __str__(self):
return self.title
views.py
class ComboList(ListView):
template_name = 'products/list.html'
def get_context_data(self, *args, **kwargs):
context = super(ComboList, self).get_context_data(*args, **kwargs)
cart_obj, new_obj = Cart.objects.new_or_get(self.request)
context['cart'] = cart_obj
return context
def get_queryset(self, *args, **kwargs):
request = self.request
combo = Combo.objects.all()
return combo