Как вернуть отфильтрованые сериализованные данные?
Хочу отправлять гет запрос для фильтровки общего кверисета по дате.
Вот что я имею на данный момент:
views.py
class RecognationObjectViewSet(GenericViewSet, ListModelMixin):
queryset = RecognizedObject.objects.all()
serializer_class = RecognationObjectSerializer
def get_queryset(self):
return super().get_queryset().filter(created_datetime__lte=timezone.now())
@action(methods=["GET"], detail=False, serializer_class=RecognationObjectFilteredSerializer,
url_name='get-caler-set', url_path='filr-set')
def get_calen_set(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.GET)
serializer.is_valid(raise_exception=True)
result = serializer.save()
prn(result)
serializer_result = RecognationObjectSerializer(result)
return Response(serializer_result.data)
serialazers.py
class RecognationObjectSerializer(serializers.ModelSerializer):
class Meta:
model = RecognizedObject
fields = ['user', 'created_datetime', 'user_photo']
class RecognationObjectFilteredSerializer(serializers.ModelSerializer):
from_date = serializers.CharField()
to = serializers.CharField()
class Meta:
model = RecognizedObject
fields = ["from_date", "to"]
def save(self, **kwargs):
from_date = self.validated_data['from_date']
to = self.validated_data['to']
result = RecognizedObject.objects.filter(created_datetime__gte=from_date, created_datetime__lte=to)
return result
и такой вот запрос http://localhost:8000/project/rec-objects/filr-set/?from_date=2018-07-22&to=2020-07-22
Вот такой Responce это возвращает
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"user": null,
"user_photo": null
}
Подскажите что я делаю не так
Ответы (1 шт):
Автор решения: Mykyta
→ Ссылка
В views.py нужно поменять
serializer_result = RecognationObjectSerializer(result, many=True)
И будет работать