为什么我无法通过DRF序列化我的查询?

时间:2018-02-05 22:37:31

标签: django django-rest-framework

我正在尝试传递一些额外的键值对并遇到错误。

class execution_details(APIView):
    def get(self):
        this_job_execution = JExecutionSerializer(this_job_execution)

        payload = [{
        'binaries': binaries,
        'stage_logs': stage_logs,
        'job_logs': job_logs,
        'external_link': ext_links,}]
        return Response(this_job_execution.data + payload)

错误

unsupported operand type(s) for +: 'ReturnDict' and 'list'

我想知道是否存在问题,因为this_job_execution是单个记录而不是具有多个记录的查询集。我知道我过去用查询集做过这个,所以我怀疑这是一个问题。

1 个答案:

答案 0 :(得分:3)

问题是你要一起添加列表和字典。如果要更新字典,请使用dict.update()功能。并在字典中生成结果。

试试这个

class execution_details(APIView):
    def get(self):
        this_job_execution = JExecutionSerializer(this_job_execution)
        payload = {
        'binaries': binaries,
        'stage_logs': stage_logs,
        'job_logs': job_logs,
        'external_link': ext_links,}

        data = this_job_execution.data
        data.update(payload)
        return Response(data)

如果x = {“a”:1,“b”:2},y = {“c”:3,“d”:4}则x.update(y)使x = {“a”: 1,“b”:2,“c”:3,“d”:4}

如果要在响应中添加有效负载作为列表,请使用以下

class execution_details(APIView):
    def get(self):
        this_job_execution = JExecutionSerializer(this_job_execution)
        payload = [{
        'binaries': binaries,
        'stage_logs': stage_logs,
        'job_logs': job_logs,
        'external_link': ext_links,}]

        data = this_job_execution.data
        data["payload"] = payload
        return Response(data)