def to_python(self, value):
if value in self.empty_values:
return None
try:
obj = json.loads(value)
except JSONDecodeError:
raise DjangoValidationError(self.default_error_messages['invalid_json'], code='invalid_json')
if set(obj) != {'max_distance', 'coordinates'}:
raise DjangoValidationError(self.default_error_messages['invalid_fields'], code='invalid_fields')
max_distance = obj['max_distance']
coordinates = obj['coordinates']
try:
max_distance = float(max_distance)
except ValueError:
raise DjangoValidationError(self.default_error_messages['invalid_max_distance'], code='invalid_max_distance')
if not check_coordinates(coordinates):
raise DjangoValidationError(self.default_error_messages['invalid_coordinates'], code='invalid_coordinates')
return Point(*coordinates), Distance(m=max_distance)
评论列表
文章目录