我有一个后端模块,显示了一个很长的项目列表,如下所示:
ID Label Type
1 Label 1 Type A
2 Label 2 Type B
3 Label 3 Type A
4 Label 4 Type D
5 Label 5 Type C
6 Label 6 Type D
7 Label 7 Type C
我想要做的很简单:我想通过"添加"过滤器侧箱列出了所有可用的类型,例如
Available Types
Type A
Type B
Type C
Type D
如果单击,则应启用单一类型的过滤。例如,如果我点击"输入A"仅显示属于该类型的项目。补充工具栏的HTML应如下所示
<ul>
<li><a href="?type=11">Type A</a></li>
<li><a href="?type=12">Type B</a></li>
<li><a href="?type=13">Type C</a></li>
<li><a href="?type=14">Type D</a></li>
</ul>
我该如何实现?我现在很困惑......
Thanx很多!
答案 0 :(得分:1)
您可以使用class based generic views
from django.views import generic
class MyListView(generic.ListView):
model = MyModel
template_name = 'my_list.html'
def get_queryset(self):
queryset = super(MyListView, self).get_queryset()
# get query value of query parameter 'type'
type = self.request.GET.get('type', None)
if type:
# if type is given then filter
return queryset.filter(type__exact=type)
# if type is not give then return all
return queryset
您可以参考文档here