Как видите, сообщение об ошибке очень конкретное c:
'Enter a valid IPv4 address.'
Просматривая код, я не смог найти такого сообщения об ошибке в DRF. Это означало, что сообщение приходит от django валидатора и, в частности, validate_ipv4_address
.
Как вы упомянули, вы используете "string"
в качестве ввода для его проверки. Если вы посмотрите на to_internal_value
из IPAddressField
, вы заметите, что значение "string"
не вызовет там никаких ошибок. Оттуда он идет к валидаторам и выдает сообщение, которое вы видите.
Поскольку validator
напрямую вызывает ValidationError
, он не go с помощью метода fail
сериализатора. , И, следовательно, он не может найти ключ invalid
в сообщениях об ошибках, которые были предоставлены в поле.