2017-06-20 55 views
0

我們有一個端點可以讓您搜索兩個日期之間的事件。根據模型中不存在的查詢參數過濾請求

/events?start_time=X&end_time=X

事件與一個模型:

  • ID
  • EVENT_DATE

我們是否應該在視圖中start_timeend_time參數做驗證,串行器或模型?

我們要確保包含start_time參數,end_time是可選的,並確保這兩個參數均爲格式良好的日期。

這是視圖中的定製邏輯,還是DRF(或Django)提供來執行此驗證的一組幫助器?

+0

使用裝飾器來驗證你的兩個/單一的日期格式正確,我希望查詢設置你可以很容易做到 –

回答

1

這是filtering,所以應該在視圖中的queryset上完成。我猜也應該在那裏完成對這些數據的驗證。您可以使用專用串行器來驗證該數據(例如,在get_queryset中)。

但是,我會建議使用django-filter如果驗證適合您,將會小心。

也許這樣的filterset:

from django_filters import rest_framework as filters 

class EventFilterset(filters.FilterSet) 
    start_time=filters.DateFilter(name='event_date', lookup_expr='gte') 
    end_time=filters.DateFilter(name='event_date', lookup_expr='lte') 

    class Meta: 
     model=Events 
     fields=['start_time', 'end_time'] 

我不知道,如果你需要的class Meta部分。

完整文檔here