def validate(self, serializer: BaseSerializer): if serializer.is_valid(): return # Log a sanitized version of serializer.errors with minimal information about the # remote response's contents. errors is supposed to be a map with field names as keys # (https://www.django-rest-framework.org/api-guide/serializers/#validation), # but in list views, it's a ReturnList of such dicts. error_fields = set() if isinstance(serializer.errors, dict): error_fields = set(serializer.errors.keys()) else: for error in serializer.errors: error_fields |= error.keys() logger.error("Fields %s in the remote response did not validate", sorted(error_fields)) raise RemoteAPIException( title="Invalid remote data", detail="Some fields in the remote's response did not match the schema", code="validation_errors", status_code=status.HTTP_502_BAD_GATEWAY, )
def perform_create(self, serializer: BaseSerializer) -> None: abilities = retrieve_pokemon_abilities(serializer.validated_data['name']) serializer.save(abilities=abilities)
def perform_create(self, serializer: BaseSerializer) -> None: serializer.save(creator=self.request.user)
def perform_create(self, serializer: serializers.BaseSerializer): print(serializer.validated_data) serializer.save()
def perform_create(self, serializer: serializers.BaseSerializer): print(serializer.validated_data) serializer.run_validation(serializer.validated_data) if serializer.is_valid(): serializer.save()
def perform_create(self, serializer: BaseSerializer): serializer.save(user_type='visitor')
def perform_create(self, serializer: BaseSerializer): serializer.save(user_type=HOST_REPR)
class BaseListSerializer(Serializer): data = ListSerializer( required=False, allow_empty=True, child=BaseSerializer(required=False, allow_null=True), )
class BaseObjectSerializer(Serializer): data = BaseSerializer(required=False, allow_null=True)
def test_expander_adapter_missing(self): self.assertRaises(ExpanderAdapterMissing, ExpanderAdapterStrategy, BaseSerializer())
def perform_create(self, serializer: BaseSerializer) -> None: with transaction.atomic(): instance = serializer.save() user = self.request.user # Из-за этой строки можно использовать только с наследниками APIView instance.log_activity_create(user=user if not user.is_anonymous() else None) self.hook_post_create(instance)