gpt4 book ai didi

python - 将附加数据添加到 django Rest Framework View 集响应

转载 作者:行者123 更新时间:2023-11-30 23:14:20 26 4
gpt4 key购买 nike

目前,我有一个示例仓库的 View 集,我想将附加的“过滤器”列表传递给返回的每个字典。

我的仓库 View 集:

class WarehouseViewSet(viewsets.ReadOnlyModelViewSet):
filters = [{'date': 'Date/Time'}]

queryset = Warehouse.objects.all()
serializer_class = WarehouseSerializer

仓库序列化器:

class WarehouseSerializer(serializers.ModelSerializer):

class Meta:
model = Warehouse
field = ('name', 'address', 'action_list')

目前我收到一个 json 列表响应,例如:

[
{
"id": 1,
"name": "Brameda Warehouse",
"address": "Bergijk"
},
{
"id": 2,
"name": "Amazon",
"address": "UK"
}
]

我想得到:

[
{
"id": 1,
"name": "Brameda Warehouse",
"address": "Bergijk"
"filters": [
{'date': 'dateTime'}, {'actove': 'ActiveObject'}
]
},
{
"id": 2,
"name": "Amazon",
"address": "UK",
"filters": [
{'date': 'dateTime'}, {'actove': 'ActiveObject'}
]
}
]

我知道在对象字典之外拥有一个过滤器就足够了,但我想知道如何在对象内部传递列表。

任何关于如何传递将作为 json 对象返回的附加列表的想法都将受到赞赏。

最佳答案

我觉得有点不清楚你想要什么,但如果你只想向输出添加一些只读计算字段,你可以使用 SerializerMethodField:

class WarehouseSerializer(serializers.ModelSerializer):
# your other declared fields here
filters = serializers.SerializerMethodField()

# your Meta options here

def get_filters(self, obj):
return ['some', 'stuff', 'here', {'and': 'more'}]
  • 该方法必须命名为 get_field_name(有一个选项可以更改它,但我确实没有看到使用它的任何意义)。
  • 您得到的实例被序列化为obj
  • 您可以返回由常规类型(数字、字符串、字典、列表、元组、 bool 值、None)组成的任何内容。
  • 如果数据必须来自外部,您应该让调用者将其添加到上下文中,并且它将在 self.context['foobar'] 上可用。

关于python - 将附加数据添加到 django Rest Framework View 集响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28808721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com