python - Django Rest Framework 递归嵌套父序列化

标签 python django recursion serialization django-rest-framework

我有一个模型,它有一个名为 parent 的自引用字段。 型号:

class Zone(BaseModel):
    name = models.CharField(max_length=200)
    parent = models.ForeignKey('self', models.CASCADE, blank=True, null=True, related_name='children')

    def __unicode__(self):
        return self.name

序列化器:

class ZoneSerializer(ModelSerializer):
    parent = PrimaryKeyRelatedField(many=False, queryset=Zone.objects.all())
    parent_disp = StringRelatedField(many=False, source="parent")

    class Meta:
        model = Zone
        fields = ('id', 'name', 'parent', 'parent_disp')

现在我想序列化区域的父级及其父级和它的父级直到父级为无。 我为 child 找到了递归序列化方法,但没有为 parent 找到递归序列化方法。 我该怎么做?

最佳答案

好的,我就这样工作了。

class ZoneSerializer(ModelSerializer):
    parent = SerializerMethodField()

    class Meta:
        model = Zone
        fields = ('id', 'name', 'project', 'parent',)

    def get_parent(self, obj):
        if obj.parent is not None:
            return ZoneSerializer(obj.parent).data
        else:
            return None

关于python - Django Rest Framework 递归嵌套父序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39104575/

相关文章:

django - 使用 Django 进行 Web 开发的虚拟环境的最佳实践?

Django i18n 不工作

c - 用递归确定C中的最大数

python - 创建新的 "object"列

python - 如何找到拟合的多项式特征模型的回归曲线方程

python - 全新安装 Apache Airflow 2.2.3 .. OOps 发生了一些不好的事情

python - 为什么在使用 mongodb 作为后端时 django 中不需要 "models.py"?

javascript - Django:语法错误:意外的标记<

algorithm - 解决涉及 Theta 符号的时间复杂度的重复出现

c - 扫雷揭示了 C 中的细胞