我使用的是^{
关于应用程序的正常工作方式的一点概述:过滤器接受lookup_type
参数。他们的行为就像是django人
filters.py
class ProductFilter(django_filters.FilterSet):
price = django_filters.NumberFilter(lookup_type='lt')
然后views.py
from .filters import ProductFilter
def product_list(request):
filtered_data = ProductFilter(request.GET, queryset=Product.objects.all())
return render(request, 'template.html', {'f': filtered_data})
这很好,但如果我希望站点访问者能够显式地指定lookup_type
,并根据自己的选择进行过滤,那该怎么办?我想出了一个解决方案,就是把filters.py
到views.py
的所有代码都取下来:
def product_list(request):
lookup_type_user = request.GET.get('lookup_type', 'exact')
class ProductFilter(django_filters.FilterSet):
price = django_filters.NumberFilter(lookup_type=lookup_type_user)
filtered_data = ProductFilter(request.GET, queryset=Product.objects.all())
# ...
这个工作,但我想保持在不同的文件中的代码。你有什么想法吗?你知道吗
在过滤器模块中定义一个函数,用于创建过滤器类。你知道吗
然后在视图中导入
filter_factory
。你知道吗相关问题 更多 >
编程相关推荐