Django序列化程序未将数据保存到数据库,但响应正常

2024-04-26 22:03:15 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的序列化程序不保存对数据库的更改,但来自API的JSON响应有新的正确值! 怎么了?在

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)

Tags: instanceself程序id数据库idsfield序列化
1条回答
网友
1楼 · 发布于 2024-04-26 22:03:15

设置字段后,您不会保存instance

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

该字段被正确地归因于已序列化的实例,但没有保存到数据库中,这就是为什么您看到新值的正确响应。在

相关问题 更多 >