<p>还可以提供自己的<strong>过滤器类,这可能会给您更多的选择和灵活性</p>
<pre><code>import sys, django_filters, json, io
class TaskFilter(django_filters.FilterSet):
tag = django_filters.CharFilter(name='tags__name', lookup_type='iexact')
university = django_filters.NumberFilter(name='poster__university', lookup_type='exact')
class Meta:
model = Task
fields = {
'poster': ['exact'],
'tasker': ['exact'],
'status': ['exact'],
'created': ['lt', 'gt']
}
</code></pre>
<p>在这个例子中,我得到了过滤器</p>
<ol>
<li>海报=1</li>
<li>任务=115</li>
<li>状态=O</li>
<li><p>创建日期=2015-09-22
17: 39:01.184681(这样我就可以按小于该值的值过滤datetime)</p></li>
<li><p>创建时间=2015-09-22 17:39:01.184681(或大于提供时间
值)</p></li>
</ol>
<p>此外,我还可以使用自定义筛选字段隐藏外部字段,在本例中,它是<strong>标记</strong>&;<strong>大学</strong>。另外,我还可以提供比较运算符(<strong>lookup_type</strong>)</p>
<p>样本请求:</p>
<pre><code>GET /api/v1/tasks/?offset=0&status=O&limit=100&university=1&ordering=-created&created__lt=2015-09-22 17:39:01.184681&tag=sport HTTP/1.1
Host: domain.com
Content-Type: application/json
Authorization: token 61cbd3c7c2656d4e24edb31f5923a86910c67b7c
User-Timezone: US/Pacific
Cache-Control: no-cache
</code></pre>