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