0

我在 django-rest 框架中有一个 api,现在返回这个 json 数据:

  [
    {
        "id": 1,
        "foreignobject": {
            "id": 3
        },
        "otherfields": "somevalue"
    }
]

但我希望它返回类似这样的内容(仅将 foreigneky 展平为其 ID):

[
    {
        "id": 1,
        "foreignobject_id":3,
        "otherfields": "somevalue"
    }
]

在模型资源中执行此操作,现在我有(简化):

class ForeignKeyInDataResource(ModelResource):
    model = TheOtherModel
    fields = ('id',)


class SomeModelResource(ModelResource):
    model = SomeModel
    fields = ( 'id',('foreignobject','ForeignKeyInDataResource'),'otherfields',)

我已经尝试过类似的东西:

class SomeModelResource(ModelResource):
    model = SomeModel
    fields = ( 'id','foreignobject__id','otherfields',)

但这没有用

对于完整的故事,这是视图返回数据的方式,列表是对 SomeModel 查询的结果:

data = Serializer(depth=2 ).serialize(list)
return Response(status.HTTP_200_OK, data)
4

2 回答 2

1

我不再能够支持 REST framework 0.x,但如果您决定升级到 2.0,这很简单——只需在序列化程序上声明该字段,如下所示:foreignobject = PrimaryKeyRelatedField()

于 2012-11-20T13:43:19.253 回答
1

我找到了另一个选择:(通过阅读 ModelResource 文档...)在 Modelresource 中,您可以定义一个函数(self,instance),它可以返回 id。

在字段中您可以添加此功能!

所以,这有效:

class SomeModelResource(ModelResource):
    model = SomeModel
    fields = ( 'id','foreignobject_id','otherfields',)

    def foreignobject_id(self, instance):
        return instance['foreignobject']['id']
于 2012-11-20T16:17:36.750 回答