擅长:python、mysql、java
<p>为了进一步说明Flaiming的答案,如果您只打算通过ISO datetime格式进行筛选,那么覆盖默认值以始终使用<code>IsoDateTimeFilter</code>会有帮助。这可以通过每个过滤器集来完成,例如</p>
<pre><code>from django.db import models as django_models
import django_filters
from rest_framework import filters
from rest_framework import viewsets
class EventFilter(filters.FilterSet):
class Meta:
model = Event
fields = {
'timestamp': ('lte', 'gte')
}
filter_overrides = {
django_models.DateTimeField: {
'filter_class': django_filters.IsoDateTimeFilter
},
}
class EventsView(viewsets.ReadOnlyModelViewSet):
...
filter_class = EventFilter
</code></pre>
<p>这样就不必为每个查找表达式和每个字段设置不同的筛选器。</p>