Вот есть у меня serialiser:
class CompanySerializer(serializers.Serializer):
id = serializers.IntegerField()
name = serializers.CharField(max_length=255, required=True)
start_date = serializers.DateField(required=True)
description = serializers.CharField()
city = serializers.CharField(required=True, max_length=255)
owner_id = serializers.IntegerField(required=True, write_only=True)
def create(self, validated_data):
""" Create company method """
owner_id = validated_data.pop('owner_id', None)
company = Company.objects.create(**validated_data)
company_member = CompanyMember.objects.create(user_id=owner_id,
company_id=company.id,
role='owner')
return company
И ViewSet:
class CompaniesListViewSet(viewsets.ViewSet):
def create(self, request):
""" Creates a new company """
serializer = CompanySerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response({'company': serializer.data},
status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
Как я понимаю, если `serializer.is_valid() проходит успешно, а в serializer.save() происходит ошибка, то запрос все равно будет успешным?
Исходя из подходов Django и Django Rest Framework как правильно учесть данный нюанс? Сделать метод, отличный от save или всю логику вынести в какой-то другой объект, отвечающий за создание/обновление объектов, а serialiser использовать только для json-ответов? Заранее благодарю!
почему не ModelSerializer, для начала?
Обсуждают сегодня