我正在做一个Django项目,我需要显示一个项目列表,并允许用户根据各种条件过滤项目。我使用Django的通用ListView来显示项目,但我不确定如何根据用户的输入实现动态过滤。
以下是我当前的设置:模型
class Item(models.Model):
name = models.CharField(max_length=100)
category = models.CharField(max_length=50, choices=CATEGORY_CHOICES)
price = models.DecimalField(max_digits=6, decimal_places=2)
available = models.BooleanField(default=True)
观点:
class ItemListView(ListView):
model = Item
template_name = "items/item_list.html"
item_list.html
{% for item in object_list %}
<div class="item">
<h2>{{ item.name }}</h2>
<p>Category: {{ item.category }}</p>
<p>Price: {{ item.price }}</p>
</div>
{% endfor %}
我想允许用户按类别,价格范围和可用性过滤项目。在Django ListView中实现此功能的最佳方法是什么?任何指导或示例都将不胜感激!
1条答案
按热度按时间tkclm6bt1#
你可以在html模板的标签中使用查询参数。
例如,执行以下操作:
然后,在视图中,您可以使用
get_queryset()
或get_context_data()
来过滤项目。类似于以下内容: