向Django rest框架viewset resp添加附加数据

2024-10-02 04:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我有一个示例仓库的视图集,我希望将附加的“filter”列表传递给返回的每个字典。在

我的仓库视图集:

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

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

仓库序列化程序:

^{pr2}$

目前我得到一个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对象返回的附加列表的任何想法都将被告知。在


Tags: 对象nameidjson列表date字典address
1条回答
网友
1楼 · 发布于 2024-10-02 04:33:00

我觉得有点不清楚您想要什么,但是如果您只想在输出中添加一些只读的计算字段,可以使用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。在
  • 您可以返回由常规类型(数字、字符串、dict、list、tuples、booleans、None)组成的任何内容。在
  • 如果数据必须来自外部,您应该让调用者将其添加到上下文中,并且它将在自我语境['foobar']。在

相关问题 更多 >

    热门问题