Python 如何在Django模板中从当前经过身份验证的用户检查模型中是否存在记录?
下面的代码检查用户是否在购物车中添加了产品。如果当前用户将其添加到购物车中,则应显示Python 如何在Django模板中从当前经过身份验证的用户检查模型中是否存在记录?,python,django,Python,Django,下面的代码检查用户是否在购物车中添加了产品。如果当前用户将其添加到购物车中,则应显示从购物车中删除按钮,否则应显示在购物车中添加产品的简单表单 {% for ordereditem in item.ordereditems_set.all %} {% if ordereditem.quantity > 0 and ordereditem.user.username == user.username %} <a href="{{ item.get_remove_from_c
从购物车中删除
按钮,否则应显示在购物车中添加产品的简单表单
{% for ordereditem in item.ordereditems_set.all %}
{% if ordereditem.quantity > 0 and ordereditem.user.username == user.username %}
<a href="{{ item.get_remove_from_cart_url }}">Remove from cart</a>
{% elif not ordereditem %} # here!
<!-- else if there is no record of 'ordereditem' from current user show this form to add it to cart-->
<form class="d-flex justify-content-left" method="POST" action="{{ item.get_add_to_cart_url }}">
{% csrf_token %}
<input type="number" name="number" value="1">
<input type="submit" value="Add to cart">
</form>
{% endif %}
{% endfor %}
这是github。谢谢您需要:
您需要:
我添加了它,但无论它是否添加到购物车中,它都会显示
remove from cart按钮
,因为如果您仔细查看OrderedItem
model,就会发现User
model有一个外键。如果不是来自此用户,则可能总是有来自其他用户的ordereditem
记录。您不应该在模板中执行此逻辑,应该在视图中执行,例如users\u orders=ordereditem.objects.filter(user\u id=…)
我添加了它,但无论它是否添加到购物车中,它都会显示从购物车中删除按钮
,因为如果您仔细查看OrderedItem
模型,就会发现用户
模型有一个外键。如果不是来自此用户,则可能总是有来自其他用户的ordereditem
记录。您不应该在模板中执行此逻辑,应该在视图中执行,例如users\u orders=ordereditem.objects.filter(user\u id=…)
class Item(models.Model):
title = models.CharField(max_length=100)
price = models.FloatField()
discount_price = models.DecimalField(max_digits=5,
decimal_places=2, verbose_name='Discount', null=True, blank=True)
image = models.ImageField(upload_to='products/%Y/%m/%d/')
image_cover = models.ImageField(upload_to='products/%Y/%m/%d/')
description = models.TextField()
slug = models.SlugField(max_length=150, blank=True, null=True)
category = models.CharField(max_length=15, choices=CATEGORY_CHOICE)
label = models.CharField(max_length=10, choices=LABEL_CHOICE)
associated_items = models.ManyToManyField("self", blank=True, null=True)
class OrderedItems(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
ordered = models.BooleanField(default=False)
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
items = models.ManyToManyField(OrderedItems)
start_date = models.DateTimeField(auto_now_add=True)
ordered_date = models.DateTimeField()
ordered = models.BooleanField(default=False)
{% for ordereditem in item.ordereditems_set.all %}
...
{% empty %}
No items
{% endfor %}