小编cvk*_*cvk的帖子

如何在Django中为(基于类)通用对象列表创建过滤器表单?

我正在使用Django 1.3基于类的通用视图来显示图像列表,但我想添加一个过滤器,使用户能够缩小显示的结果范围.

我当前的方法有效,但感觉相当hackish:

class ImageFilterForm(ModelForm):
    class Meta:
        model = Image

class ImageListView(ListView):
    model = Image

    def get_queryset(self):
        qs = Image.objects.select_related()  
        for item in self.request.GET:
            key, value = item, self.request.GET.getlist(item)
            # ... Filtering here ...
        return qs

    def get_context_data(self, **kwargs):
        context = super(ImageListView, self).get_context_data(**kwargs)
        context['filter_form'] = ImageFilterForm(self.request.GET)
        return context
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法将自定义过滤添加到通用视图?

django

12
推荐指数
1
解决办法
9041
查看次数

标签 统计

django ×1