【问题标题】:Serializing 2 tables using Django Rest Framework使用 Django Rest Framework 序列化 2 个表
【发布时间】:2016-12-17 16:09:34
【问题描述】:

我需要将 2 个表序列化为一个 JSON 对象,我曾与 DRF 合作过,并且知道如何将单个模型序列化为 JSON。这是 2 个模型 -

class FooOne(models.Model):
      field_a = models.CharField(max_length=255, null=False)
      field_b = models.CharField(max_length=255, null=False)
      field_c = models.CharField(max_length=255, null=False)

class FooTwo(models.Model):
      field_fk = models.ForeignKey(FooOne)
      field_d = models.CharField(max_length=255, null=False)
      field_e = models.CharField(max_length=255, null=False)

我该如何实现这一目标。

【问题讨论】:

    标签: json django python-2.7 django-rest-framework


    【解决方案1】:

    如果你想使用嵌套表示。

    class FooOneSerializer(serializers.ModelSerializer): 
        class Meta:
            model = FooOne
            fields = (field_a, field_b, field_c)
    
    class FooTwoSerializer(serializers.ModelSerializer): 
        field_fk = FooOneSerializer()
        class Meta:
            model = FooTwo
            fields = (field_fk, field_d, field_e)
    

    如果您只想以非嵌套表示形式返回所有内容

    from rest_framework.renderers import JSONRenderer
    data = FooOneSerializer(instance=foo_one_instance).data
    data.update(FooTwoSerializer(instance=foo_two_instance).data)
    json_data = JSONRenderer().render(data)
    

    【讨论】:

    • 是的,我明白了,因为 FooOne 模型是 FooTwo 的外键。我的 JSON 必须是嵌套的,其中 FooTwo 嵌套在 FooOne 中的哪个字段上。
    • 工作,不是我正在寻找的确切结果。但我可以从这里开始工作。谢谢。
    • 能否请您留下您在评论中给出的第一个答案?
    猜你喜欢
    • 2017-07-12
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2015-06-29
    • 2015-01-12
    • 2016-07-21
    相关资源
    最近更新 更多