python - 如何过滤django模板中的数据?
问题描述
我有一个 django 模型如下,我在其中定义了类别
CATEGORY_CHOICES = (
('BS', 'Best Selling'),
('TP', 'Trending Product'),
('RP', 'Related Products'),
('NA', 'New Arrival'),
('F', 'Featured'),
('OS', 'on sale'),)
class Item(models.Model):
title = models.CharField(max_length=100)
price = models.FloatField()
discount_price = models.FloatField(blank=True, null=True)
category = models.CharField(choices=CATEGORY_CHOICES, max_length=2)
label = models.CharField(choices=LABEL_CHOICES, max_length=1)
slug = models.SlugField()
description = models.TextField()
image = models.ImageField()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("core:product", kwargs={
'slug': self.slug
})
def get_add_to_cart_url(self):
return reverse("core:add-to-cart", kwargs={
'slug': self.slug
})
def get_remove_from_cart_url(self):
return reverse("core:remove-from-cart", kwargs={
'slug': self.slug
})
**在我的 Django 主页中,有多个部分基于趋势产品、特价、特色、新品等类别 **我想要的是根据这些类别过滤数据并显示到相应的部分,为此,我注册了一个模板如下:
@register.filter
def in_category(Item, category):
return Item.filter(category=category)
在我的主页模板上,我尝试按如下方式使用此过滤器:
{% for object_list in object_list|in_category:Featured %}
<div class="col-3">
<div class="custom-col-5">
<div class="single_product">
<div class="product_thumb">
<a href="{{ item.get_absolute_url }}" class="primary_img"><img src="{{ item.image.url }}"
alt="product1"></a>
<a href="{{ item.get_absolute_url }}" class="secondary_img"><img src="{{ item.image.url }}"
alt="product1"></a>
<div class="quick_button">
<a href="{{ item.get_absolute_url }}" data-toggle="modal" data-target="#modal_box"
data-placement="top" data-original-title="quick view">Quick
View</a>
</div>
</div>
<div class="product_content">
<div class="tag_cate">
<a href="#">Ring, Necklace,</a>
<a href="#">Earrings</a>
</div>
<h3><a href="{{ item.get_absolute_url }}">{{ item.title }}</a></h3>
<div class="price_box">
<span class="old_price">Rs. 45654</span>
<span class="current_price">{% if item.discount_price %}
{{ item.discount_price }}
{% else %}
{{ item.price }}
{% endif %}</span>
</div>
<div class="product_hover">
<div class="product_ratings">
<ul>
<li><a href="#"><i class="ion-ios-star-outline"></i></a>
</li>
<li><a href="#"><i class="ion-ios-star-outline"></i></a>
</li>
<li><a href="#"><i class="ion-ios-star-outline"></i></a>
</li>
<li><a href="#"><i class="ion-ios-star-outline"></i></a>
</li>
<li><a href="#"><i class="ion-ios-star-outline"></i></a>
</li>
</ul>
</div>
<div class="product_desc">
<p>This is a gold ring with diamond and Lorem ipsum
dolor sit amet.</p>
</div>
<div class="action_links">
<ul>
<li><a href="#" data-placement="top" title="Add to Wishlist" data-toggle="tooltip"><span
class="ion-heart"></span></a></li>
<li class="add_to_cart"><a href="#" title="Add to Cart">Add
to Cart</a></li>
<li><a href="#" title="Compare"><i class="ion-ios-settings-strong"></i></a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
但 django 说这是一个错误VariableDoesNotExist at / Failed lookup for key [Featured] in
有人可以提前帮助我吗?
解决方案
您可以使用简单的 for 循环和条件
{% if item.category == "Featured" %}
---------html for featured categ---
{% endif %}
{% if item.category == "onsale" %}
---------html for onsale categ---
{% endif %}
.
.
.
{% endfor %}```
推荐阅读
- mysql - 将 SQL 语句转换为 Eloquent 查询构建器
- rust - 多个底层节点,但每个只有一个对等节点
- powershell - Microsoft GraphAPI / Powershell:如何使用 Graph over Powershell 创建多个 PUTS?
- python - 根据各自的时区转换每一行的日期时间
- python - seaborn:无法将字符串转换为浮点数
- python-3.x - AWS 弹性 beantalk 的上传文件夹路径是什么?
- c# - 为 InvokeCommand 中的命令参数编写单元测试
- javascript - 动态分页列表
- ubuntu - cloud-init 无法在附加了 iso 的 ubuntu 中工作
- docusignapi - DocuSign 通过 API 创建信封,但未发送电子邮件