Запись ошибок сериализатора в регистратор. Django rest

#python #django #django-rest-framework

#python #django #django-rest-framework

Вопрос:

У меня есть регистратор, который записывает действия в представлении. Я успешно записываю все выполненные запросы, но не могу понять, как записать ошибки проверки сериализатора, например, если я ввел дату не в формате, я хочу записать в регистратор

 logger.warning('Error Incorrectly entered data {}'.format(Output serializer error here)
  

Где и как я должен записать свое сообщение в регистратор?

мой код

views.py

 
logger = logging.getLogger(__name__)


class EventView(viewsets.ModelViewSet):
    queryset = Event.objects.all()
    lookup_field = 'pk'
    serializer_class = EventSerializer
    permission_classes = [ProjectPermission.IsPartner | ProjectPermission.IsAdmin]

    def perform_create(self, serializer):
        serializer.save(partnerId=self.request.user.user)

    @action(detail=True, methods=['get'])
    def getEvent(self, request, *args, **kwargs):
        response = self.retrieve(request, *args, **kwargs)
        logger.debug('Event {} name was get'.format(response.data))
        return response

    @action(detail=True, methods=['put'])
    def putEvent(self, request, *args, **kwargs):
        response = self.update(request, *args, **kwargs)
        logger.debug('Event {} was change'.format(response.data))
        return response

    @action(detail=True, methods=['delete'])
    def deleteEvent(self, request, *args, **kwargs):
        response = self.destroy(request, *args, **kwargs)
        logger.debug('Event {} was delete'.format(response.data))
        return response

    @action(detail=True, methods=['post'])
    def postEvent(self, request, *args, **kwargs):
        response = self.create(request, *args, **kwargs)
        logger.debug('Event {} was delete'.format(response.data))
        return response
  

serializers.py

 class EventSerializer(serializers.ModelSerializer):
    start_date = serializers.DateTimeField(format='%d-%m-%YT%H:%M:%SZ')
    end_date = serializers.DateTimeField(format='%d-%m-%YT%H:%M:%SZ')

    class Meta:
        model = Event
        fields = ('id', 'title', 'description', 'start_date', 'end_date', 'cover_page_url', 'address', 'city', 'sportType',
                  'participantLimit', 'generalInformation', 'enabled', 'partnerId'
                  )
        extra_kwargs = {"partnerId": {'read_only': True}}
  

Ответ №1:

Вы можете проверить достоверность ваших данных с serializer.is_valid() помощью . Поэтому, когда он возвращает False, вы можете записывать в регистратор.