Campo Id do modelo do Django Rest Framework no serializador de relacionamento aninhado

Estou usando o Django Rest Framework onde tenho os seguintes dois serializadores:

class ServiceSerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()

    class Meta:
        model = ServiceType
        fields = ('id', 'serviceName', 'servicePrice')


class CompanyShortListSerializer(serializers.ModelSerializer):

     services = ServiceSerializer(many=True)

     class Meta:
         model = Company
         fields = ( 'id','name','address','cost_per_patient','cost_per_month','renting_fee','services')

O modelo ServiceType fica assim:

class ServiceType(models.Model):
     serviceName = EncryptedCharField(max_length=100, blank=True, verbose_name = "Typ usługi")
     servicePrice = EncryptedFloatField(null=True, blank=True, verbose_name = "Cena usługi", validators = [MinValueValidator(0.1), MaxValueValidator(999)])
     company = models.ForeignKey(Company, related_name = 'services')

Gostaria de atualizar as instâncias existentes alterando os serviços relacionados (por exemplo, excluindo alguns deles). Para conseguir isso, estou fazendo o seguinte:

def update(self, instance, validated_data):
    # Updates an exisitng Company with several services 
    instance.name = validated_data['name']
    instance.address = validated_data['address']
    instance.cost_per_patient = validated_data['cost_per_patient']
    instance.renting_fee = validated_data['renting_fee']
    services_data = validated_data['services']

    for item in services_data:
        updatedService = ServiceType(
            serviceName = item['serviceName'],
            servicePrice = item['servicePrice'],
            id=item['id'], 
            company=instance)
        updatedService.save()

    return instance

O problema que estou enfrentando é que oservice['id'] campo não é fornecido - o que significa que recebo umKeyError 'id' - embora eu tenha adicionado explicitamente noServiceSerializer id campo.

EDITAR

Aqui está uma solicitação exemplar (retirada do Chrome) que estou postando:

 { "id":49,"name":"Test 1",
   "address":"Testowa 1",
   "renting_fee":200,
   "cost_per_month":300,
   "cost_per_patient":null,
   "services":[
   {"id":67,"serviceName":"Terapia","servicePrice":100},
   {"id":68,"serviceName":"Terapia par","servicePrice":150},
   {"id":69,"serviceName":"Terapia po angielsku","servicePrice":120}
   ]
 } 

O que estou fazendo de errado e como obter o ID de um objeto (basicamente ServiceSerializer) usando serializadores aninhados?

EDIT no.2

Quando imprimo a partir da função de atualização do serializador, obtenho o seguinte:

print(self.data['services']) me dá:

[
 OrderedDict([('id', 67), ('serviceName', u'Terapia'), ('servicePrice', 100.0)]),
 OrderedDict([('id', 68), ('serviceName', u'Terapia par'), ('servicePrice', 150.0)]),
 OrderedDict([('id', 69), ('serviceName', u'Terapia po angielsku'), ('servicePrice', 120.0)]), 
 OrderedDict([('id', 70), ('serviceName', u'Terapia grupowa'), ('servicePrice', 140.0)])
]

Contudo,print(services_data) fornece o seguinte (basicamente o mesmo, mas sem o ID):

[
OrderedDict([(u'serviceName', u'Terapia'), (u'servicePrice', 100.0)]),
OrderedDict([(u'serviceName', u'Terapia par'), (u'servicePrice', 150.0)]),
OrderedDict([(u'serviceName', u'Terapia po angielsku'), (u'servicePrice', 120.0)])
]

E aids dá o fora ...

EDIT no.3

De acordo comDocumentação do Django Rest Framework Se um determinado campo estiver na representação de saída do serializador, deve ser umHiddenField. No entanto, isso requer umadefault value ... Eu verifiquei isso e, de fato, usando este HiddenField com um valor padrão 'resolve' o problema - o ID está lá em validated_data. O problema é que oid não está correto. Existe a possibilidade de definir issoid ao valor do objeto enviado ao serializador?

questionAnswers(4)

yourAnswerToTheQuestion