私はタイムスタンプフィールドを持ついくつかのモデルがあります:Django - Django Rest Frameworkで日付フィルタリングをするには?
models.py
class Event(models.Model):
event_type = models.CharField(
max_length=100,
choices=EVENT_TYPE_CHOICES,
verbose_name=_("Event Type")
)
event_model = models.CharField(
max_length=100,
choices=EVENT_MODEL_CHOICES,
verbose_name=_("Event Model")
)
timestamp = models.DateTimeField(auto_now=True, verbose_name=_("Timestamp"))
私はその後、ジャンゴ・フィルタが提供して、このクラスのAPIエンドポイントを作成するために、ジャンゴ・休息・フレームワークを使用していますがフィルタリング機能は、次のように次の設定で
from .models import Event
from .serializers import EventSerializer
from rest_framework import viewsets, filters
from rest_framework import renderers
from rest_framework_csv import renderers as csv_renderers
class EventsView(viewsets.ReadOnlyModelViewSet):
"""
A read only view that returns all audit events in JSON or CSV.
"""
queryset = Event.objects.all()
renderer_classes = (csv_renderers.CSVRenderer, renderers.JSONRenderer)
serializer_class = EventSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('event_type', 'event_model', 'timestamp')
:
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',),
}
event_type
とevent_model
でフィルタリングできますが、タイムスタンプフィールドでフィルタリングするのは問題です。それはincorectですが
response = self.client.get("/api/v1/events/?timestamp=2016-01-02 00:00+0000", **{'HTTP_ACCEPT': 'application/json'})
:
私は次のように私は何ができる期待AuditEvent.objects.filter(timestamp__gte='2016-01-02 00:00+0000')
:基本的に、私は次のように相当のAPIコールを作りたいです。特定の値以上のタイムスタンプを持つすべてのオブジェクトを返すAPI呼び出しを作成するにはどうすればよいですか?
うーん、I私は1になっているはずです。私は 'django_filters.DateTimeFilter'と' django_filters.IsoDateTimeFilter'の両方を使ってみました。なぜそれが事実かもしれないという考え? – orange1