【问题标题】:How to build object after serialize in Django如何在Django中序列化后构建对象
【发布时间】:2019-03-16 12:48:02
【问题描述】:

我正在通过以下方式序列化模型的实例。

serialized_object = serializers.serialize ('json', [track,])

输出

   [{"model": "blog.track", "pk": null, "fields": {"album": null, "name": "Song 1", "lyrics": "", "song": "Z.mp3", "url_download": null, "length": "00:00:12"}}]

然后我保存序列化对象,以便在某些任务结束时将其保存在数据库中。我的问题是如何从序列化模型中重新构建模型的实例。以及如何在视图中获取序列化模型的字段?

再调查一下,阅读可以用这种方式反序列化和保存的Django文档

for obj in serializers.deserialize("json", serialized_object):
    print(obj.name)
    obj.save ()

但是我想获取该对象的值,但是在尝试时会出现以下错误

AttributeError: 'DeserializedObject' object has no attribute 'name'

【问题讨论】:

  • 来自the docsDjango 对象本身可以被检查为deserialized_object.object。如果模型上不存在序列化数据中的字段,则将引发 DeserializationError,除非 ignorenonexistent 参数作为 True 传入

标签: python django django-serializer


【解决方案1】:

您收到此错误是因为文档表明您的对象包装在 DeserializedObject 中,因此请进行以下更改。

print (obj.object.name)

【讨论】:

    【解决方案2】:

    如果您使用的是 django rest 框架,那么您不需要转换回对象。您可以使用createupdate 提到的序列化程序类上的here 方法在数据库中创建或更新

    【讨论】:

      猜你喜欢
      • 2013-03-07
      • 1970-01-01
      • 2020-02-11
      • 2015-03-15
      • 1970-01-01
      • 2011-03-01
      • 2011-04-14
      • 2019-04-12
      • 1970-01-01
      相关资源
      最近更新 更多