django rest框架嵌套模型序列化器

Posted

技术标签:

【中文标题】django rest框架嵌套模型序列化器【英文标题】:django rest framework nested modelserializer 【发布时间】:2014-07-26 20:53:20 【问题描述】:

这与我的另一个问题有关django-rest-framework, multitable model inheritance, ModelSerializers and nested serializers

在 django rest 框架中,我们可以像这样定义嵌套模型序列化器

class OtherModelSerializer(serializer.ModelSerializer):
    mybasemodel_set = MyBaseModelSerializer(many=True)

    class Meta:
        model = OtherModel

当我们创建 OtherModelSerializer 时,MyBaseModelSerializer 在__init__ 运行之前被实例化。 我相信是这种情况,因为如果我覆盖 MyBaseModelSerializer 的 __init__() 并检查“实例”,它是无。

我的问题是MyBaseModelSerializer 何时以及如何通过mybasemodel_set 的查询集或实例?

我的目标是覆盖我们执行此操作时发生的情况。

【问题讨论】:

【参考方案1】:

这一行

mybasemodel_set = MyBaseModelSerializer(many=True)

将初始化类MyBaseModelSerializer 的实例并将many=True 作为参数传递。


MyBaseModelSerializer 如何传递查询集或实例?

我不是 100% 确定你想做什么,但很可能

class MyBaseModelSerializer(serializers.ModelSerializer):
     def to_representation(self, instance):
         pass

是您正在寻找的功能。您将获得一个实例并期望返回序列化数据。

http://www.django-rest-framework.org/api-guide/serializers/#overriding-serialization-and-deserialization-behavior

【讨论】:

以上是关于django rest框架嵌套模型序列化器的主要内容,如果未能解决你的问题,请参考以下文章

Django Rest Framework 序列化器作为表单和嵌套关系

如何在 django rest 框架中的嵌套序列化器相关对象上使用 prefetch_related?

Django Rest 框架嵌套序列化器

django-rest-framework、多表模型继承、ModelSerializers 和嵌套序列化器

如何获取主键相关字段嵌套序列化器django rest框架的所有值

python Django Rest_Framework框架 模型类序列化器(ModelSerializer)详解(图文并茂版)