Django-REST框架:嵌套序列化器和反序列化

2024-09-29 19:35:02 发布

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

我再次陷入了Django REST框架及其序列化程序中。

基本上,我想做的是将以下输入数据粘贴到序列化程序.序列化程序实例:

data = {
    "thing_id": 715,
    "sub_things": [
        {
            "id": 1,
            "name": "bob"
        },

        {
             "id": 2,
             "name": "mike"
        }
    ]
}

子项由a处理序列化程序.modelsserializer叫做亚辛烷化剂。这就是它的样子。

^{pr2}$

对象的序列化由ThingSerializer处理,我现在将其处理为以下内容:

^{pr3}$

现在,当我这么做的时候

^{pr4}$

我得到空订单,如:

{'sub_things': [OrderedDict(), OrderedDict()], 'thing_id': 715}

我想说ThingSerializer不需要存储到数据库中是明智的,但它确实使用了数据库中的子对象。这些也不会写入db。这只是为了跟踪该对象包含的子类内容,在浏览器客户端和Python对象之间来回传递这些数据,以进行一些计算。也许把它储存在会话中。

编辑1:

很可能我需要在ThingSerializer的create方法中添加一些东西。所以,我想最终的问题是:将子事物数据传递给子项目化器的正确语法是什么?

编辑2:

我再挖了一点。似乎空OrderEddics已传入已验证的\u数据ThingSerializer.create()出于某种原因。序列化程序验证是否正确序列化程序.u有效(). 我可以从初始的\u数据访问必要的数据,但这似乎不是很可靠。

编辑3:

也用序列化程序.ListField()对于子项。仍然在create方法中的已验证的\u数据中看到空orderEddict。


Tags: 数据对象方法name程序id数据库编辑
1条回答
网友
1楼 · 发布于 2024-09-29 19:35:02

终于弄明白了。SubThingSerializer上的只读字段阻止数据通过验证,从而导致创建空dict。我使用只读字段来防止不存在的子对象数据被传递到我的代码中,但是我想我需要另一种方法。在

相关问题 更多 >

    热门问题