【问题标题】:Serializing an array of foreign keys with Django REST Framework使用 Django REST Framework 序列化一组外键
【发布时间】:2015-01-07 10:33:15
【问题描述】:

我有一个带有自定义“ArrayField”(用于 Postgres 数组字段)的模型,它将一组外键存储到另一个模型。 Django 不强制执行关系,但我放在那里的是外键。

class Foo(model):
    bars  =  ArrayField(models.IntegerField())

class Bar(model):
    blah  = models.CharField()

所以“bars”字段的值类似于[3,64,7,34,...],其中数字是Bar 的非强制外键。在渲染 Foos 时,我想使用 Django REST Framework 渲染该字段中表示的相关对象:

{ "foo" : {  "bars" : [ {"blah":"asdf"},
                        {"blah":"asdf"}
                      ]
          }
}

我无法弄清楚在序列化程序中应该如何表达:

class BarSerializer(serializers.ModelSerializer):
    class Meta:
        fields = ('blah')

    blah     = serializersCharField()


class FooSerializer(serializers.ModelSerializer):
    class Meta:
        fields = ('bars')

    # bars     = BarSerializer(many=True)
    bars      = SomeSpecialCustomField() #?

如何在渲染的时候得到如上的 JSON?

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    试试这个:

    class SomeSpecialCustomField(serializers.Field):
    
        def to_native(self, value):
            queryset = Bar.objects.filter(pk__in=value)
            serializer = BarSerializer(queryset, many=True)
            return serializer.data
    

    确保进行正确的验证,例如检查值是否为列表等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-21
      • 2017-10-05
      • 2019-01-19
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      相关资源
      最近更新 更多