Django:将过滤侧边栏添加到更改列表管理视图

时间:2016-10-01 18:12:07

标签: python django

我有一个后端模块,显示了一个很长的项目列表,如下所示:

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很多!

1 个答案:

答案 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