Q:

Django serializer not save data to database but response is OK

The serializer below don't save changes to database but JSON response from API has new correct values! 
What is wrong with it? 
class FieldSerializer(serializers. ModelSerializer):
    class Meta:
        model = Field
        fields = 'id', 'name', 'default'

class DocumentSerializer(serializers. HyperlinkedModelSerializer):
    field = FieldSerializer(many=False, read_only=True)

    def _save_field(self, instance):
        field = self.initial_data.pop('field', None)
        field_ids = field['id']
        field = Field.objects.get(pk=field_ids)
        instance.field = field

    def save(self, **kwargs):
        instance = super().save(**kwargs)
        self._save_field(instance)

A:

You're not saving instance after setting the field:
def _save_field(self, instance):
    field = self.initial_data.pop('field', None)
    field_ids = field['id']
    field = Field.objects.get(pk=field_ids)
    instance.field = field
    instance.save()  # <-- mandatory

The field was properly attributed to the instance which was serialized, but not saved to the DB, that's why you saw the right response with the new values.