python - Django序列化器不将数据保存到数据库但响应正常

标签 python django rest

下面的序列化程序不会保存对数据库的更改,但来自 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)

最佳答案

设置字段后您没有保存实例:

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

该字段正确归因于已序列化的实例,但未保存到数据库,这就是您看到具有新值的正确响应的原因。

关于python - Django序列化器不将数据保存到数据库但响应正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47712428/

相关文章:

python - 外部 CSS 在 Python 元素的 HTML 中不起作用

node.js - 我们可以说 “If an API is following 6 constraints of REST then it’ 是一个 RESTful API”吗?

python - 将 numpy 矩阵转换为一维 numpy 数组

python - 查询MYSQL表最有效的方法

由于 "<urlopen error [SSL: NO_CIPHERS_AVAILABLE] no ciphers available (_ssl.c:661)>",Python HTTPS 下载失败

python - BaseModelFormSet __init__() 得到了一个意外的关键字参数

python - 如何将Django升级到2.0版本

c# - 使用 REST Web 服务 API 在 MVC3 应用程序中进行对象映射

node.js - d3.js、queue.js 和 node.js

Python - 线程和 While True 循环