【问题标题】:Use serializer in itself Django本身使用序列化程序 Django
【发布时间】:2020-04-30 09:59:11
【问题描述】:

如何将我的序列化程序用于序列化程序中的实例。所以本身 例如:

class CompanySerializer(serializers.ModelSerializer):
    parent = CompanySerializer
    class Meta:
        model = Company
        fields = ("id", "name", "parent")

Django 无法识别它并要求创建 CompanySerializer..

【问题讨论】:

标签: django


【解决方案1】:

您可以创建一个单独的序列化程序并将其命名为ParentCompanySerializer。即使这样也可以。比如,

class ParentCompanySerializer(serializers.ModelSerializer):
    class Meta:
       model = Company
       fields = ("id", "name")

class CompanySerializer(serializers.ModelSerializer):
    class Meta:
        model = Company
        fields = ("id", "name", "parent")
    parent = ParentCompanySerializer()

【讨论】:

  • 父级也可以有更高的父级。所以我认为这会导致这个实现出现问题?
  • 如果你看到了,我故意从 ParentCompanySerializer 中省略了parent,因为我假设你只需要直接父母而不是父母的父母等等。现在根据我的建议,不考虑对父母的父母进行序列化,因此不会成为问题。
  • 我不会弄丢那个吗?
  • 您可以选择要序列化的字段,因此在 ParentCompanySerializer 类中我只保留了两个字段 id 和 name。如果序列化程序中没有定义父字段,则不会对其进行序列化。我相信如果我正在寻找一家公司的数据就足够了,除非你想要完整的层次结构。
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2015-11-10
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
相关资源
最近更新 更多