<p>我不确定MVT结构将如何准确响应这一点,但我使用REST结构中的自定义泛型类在我想要的任何视图集中添加自定义过滤器字段</p>
<pre><code>class ListAPIViewWithFilter(ListAPIView):
def get_kwargs_for_filtering(self):
filtering_kwargs = {}
if self.my_filter_fields is not []:
# iterate over the filter fields
for field in self.my_filter_fields:
# get the value of a field from request query parameter
field_value = self.request.query_params.get(field)
if field_value:
filtering_kwargs[field] = field_value
return filtering_kwargs
def get_queryset(self):
queryset = super(ListAPIViewWithFilter, self).get_queryset()
filtering_kwargs = self.get_kwargs_for_filtering()
if filtering_kwargs != {}:
# filter the queryset based on 'filtering_kwargs'
queryset = queryset.filter(**filtering_kwargs)
self.pagination_class = None
else:
return queryset
return queryset[:self.filter_results_number_limit]
</code></pre>
<p>更改views.py中的原始区域get_queryset函数应该是解决问题的关键(它在django rest中工作)。
尝试检查哪个函数获取数据,然后确定需要的字段</p>