我想在一个模板上展示一些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})
我可以通过任何方式获得我想要的任何数量的过滤器吗?