将多个Django过滤器从视图传递到模板

时间:2014-11-02 06:06:37

标签: python django filter django-filter

我想在一个模板上展示一些Django过滤器。

每个过滤器用于继承自相同基本模型的模型

例如,这些是我的models.py

中的过滤器
class BaseProductFilter(django_filters.Filter):
    name = django_filters.CharFilter(lookup_type='icontains')
    cost = django_filters.NumberFilter(lookup_type='lt')

class FoodProductFilter(BaseProductFilter):
    farmer = django_filters.CharFilter(lookup_type='icontains')

    class Meta:
        model = FoodProduct
        fields = ['name', 'cost', 'farmer']


class ClothingProductFilter(BaseProductFilter):
    # size lookup_type will be 'exact'
    class Meta:
        model = ClothingProduct
        fields = ['name', 'cost', 'size']

有更多的过滤器,但使用上面的3进行说明。

现在在我看来,我想传递Base过滤器和所有其他过滤器,以便在一个页面上显示多个过滤器。我希望Base过滤器可以过滤从基础继承的所有模型(例如食品和服装),但我不确定它是否会起作用。

无论如何,目前我只能发送一个过滤器,我这样做:

def producttList(request):
    f = BaseProductFilter(request.GET, queryset=BaseProduct.objects.all())
    return render_to_response('products/products.html', {'filter': f})

我可以通过任何方式获得我想要的任何数量的过滤器吗?

0 个答案:

没有答案