Python 3.x 如何使用库Django RQL过滤类型为';时间';在Django Rest框架中?
我想在我的字段“hora”中的RESTAPI中使用过滤器,但您的类型是时间。当我尝试执行查询时,例如:127.0.0.1:8000/api/v1/queimadas/?hora=17:15:33,错误显示:“RQL解析错误。” 我的任务是以不同的时间筛选此字段“hora”,例如:url中的?ge(hora,17:00:00)和le(hora,20:00:00)(遵循文档),但我不能:( 非常感谢大家 这是django rql库的文档- My serializers.py:Python 3.x 如何使用库Django RQL过滤类型为';时间';在Django Rest框架中?,python-3.x,django,django-rest-framework,filtering,Python 3.x,Django,Django Rest Framework,Filtering,我想在我的字段“hora”中的RESTAPI中使用过滤器,但您的类型是时间。当我尝试执行查询时,例如:127.0.0.1:8000/api/v1/queimadas/?hora=17:15:33,错误显示:“RQL解析错误。” 我的任务是以不同的时间筛选此字段“hora”,例如:url中的?ge(hora,17:00:00)和le(hora,20:00:00)(遵循文档),但我不能:( 非常感谢大家 这是django rql库的文档- My serializers.py: class Queim
class QueimadaSerializer(serializers.ModelSerializer):
satelite = SateliteSerializer(many=False,read_only=True)
cidade = CidadeSerializer(many=False,read_only=True)
class Meta:
model = Queimada
fields = [
'id',
'latitude' ,
'longitude',
'data',
'hora' ,
'observacao',
'veracidade',
'visitado',
'satelite',
'cidade'
]
My views.py:
class QueimadasViewSet(viewsets.ModelViewSet):
queryset = Queimada.objects.all()
serializer_class = QueimadaSerializer
filter_backends = (RQLFilterBackend,)
rql_filter_class = QueimadaFilters
@action(detail=True,methods=['get'])
def satelite(self,request,pk=None):
satelite = Satelite.objects.filter(queimada__id=pk)
self.pagination_class.page_size = 10
page = self.paginate_queryset(satelite)
if page is not None:
serializer = SateliteSerializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = SateliteSerializer(satelite, many=True)
return Response(serializer.data)
My filters.py:
class QueimadaFilters(RQLFilterClass):
MODEL = Queimada
SELECT = True
FILTERS = (
{
'namespace' : 'cidade',
'filters':('id','nome'),
'qs' : SelectRelated('cidade'),
},
{
'filter': 'data',
},
{
'filter': 'hora',
'custom': True,
'lookups': {
FilterLookups.EQ,
FilterLookups.IN,
FilterLookups.I_LIKE,
FilterLookups.LE,
FilterLookups.LT,
FilterLookups.GE,
FilterLookups.GT
},
},
)
我建议您使用。它很容易使用。这可能会有所帮助
from rest_framework import filters
class UserListView(generics.ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
filter_backends = [filters.SearchFilter]
search_fields = ['username', 'email']
安装django过滤器
并在settings.py文件中声明它,非常简单