Вот есть у меня 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, для начала?
Обсуждают сегодня