首页 > 解决方案 > 如何过滤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

有人可以提前帮助我吗?

标签: pythonhtmldjangofilter

解决方案


您可以使用简单的 for 循环和条件

{% if item.category == "Featured" %}
---------html for featured categ---
{% endif %}
{% if item.category == "onsale" %}
---------html for onsale categ---
{% endif %}
 .
 .
 .
{% endfor %}```

推荐阅读