我们有一个端点,可让您搜索两个日期之间的事件。
/events?start_time=X&end_time=X
事件是一个模型:
我们是否应该对View,Serializer或Model中的start_time
和end_time
参数进行验证?
我们希望确保包含start_time
参数,end_time
是可选的,并确保两者都是格式良好的日期。
视图中是否有自定义逻辑,或者是否有一组DRF(或Django)提供的帮助程序来执行此验证?
答案 0 :(得分:1)
这是filtering,因此应该在视图中的查询集上完成。我猜也应该在那里验证这些数据。您可以使用专用的序列化程序来验证该数据(例如,在get_queryset
中)。
但是,我建议使用django-filter,如果您需要验证,请注意。
也许像这样的过滤器:
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。