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 %}