Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django rest框架中使用序列化程序将类似数据合并到自定义字段中?_Python_Django_Django Models_Django Rest Framework_Django Serializer - Fatal编程技术网

Python 如何在django rest框架中使用序列化程序将类似数据合并到自定义字段中?

Python 如何在django rest框架中使用序列化程序将类似数据合并到自定义字段中?,python,django,django-models,django-rest-framework,django-serializer,Python,Django,Django Models,Django Rest Framework,Django Serializer,我有一个api,它返回material_id、material_name和它的store_id(外键)和store_name,它还有一个搜索后端。因此,我想返回一个关键材料上的所有材料名称和材料id,同样地,返回关键材料存储中的所有存储字段 所以我尝试了下面的代码 类材料建议(generics.ListAPIView): 搜索字段=[“名称”、“形状”、“颜色”、“材料类型”, “表面类型”、“存储名称”] 过滤器\后端=(filters.SearchFilter,) queryset=Mate

我有一个api,它返回material_id、material_name和它的store_id(外键)和store_name,它还有一个搜索后端。因此,我想返回一个关键材料上的所有材料名称和材料id,同样地,返回关键材料存储中的所有存储字段

所以我尝试了下面的代码

类材料建议(generics.ListAPIView):
搜索字段=[“名称”、“形状”、“颜色”、“材料类型”,
“表面类型”、“存储名称”]
过滤器\后端=(filters.SearchFilter,)
queryset=Material.objects.all()
serializer\u class=材料建议serializer
类MaterialSuggestionSerializer(serializers.ModelSerializer):
类元:
型号=材料
字段=('material','store')
material=serializers.SerializerMethodField('get\u material'))
store=serializers.SerializerMethodField('get\u store')
def get_材料(自身、obj):
返回{'material_id':obj.id,'material_name':obj.name}
def get_存储(自身、obj):
返回{'store\u id':obj.store.id,'store\u name':obj.store.name}
当我调用api时,我得到如下结果:

    {
        "material": {
            "material_id": 14,
            "material_name": "test"
        },
        "store": {
            "store_id": 28,
            "store_name": "test1"
        }
    },
    {
        "material": {
            "material_id": 13,
            "material_name": "test3"
        },
        "store": {
            "store_id": 29,
            "store_name": "test2"
        }
    }
] 
这是我理想的回报

    {
        "material": [ {
                       "material_id": 14,
                       "material_name": "test"
                      },
                     {
                      "material_id": 13,
                      "material_name": "test3"
                     }         
                   ]


          "store": [  {
                       "store_id": 28,
                       "store_name": "test1"
                      },
                      {
                       "store_id": 29,
                       "store_name": "test2"
                      }
                  ]
    } 
或者这也太好了

    {
        "material":  {
                       "material_id": 14,13
                       "material_name": "test","test3"
                      },       



          "store":   {
                       "store_id": 28,29
                       "store_name": "test1","test2"
                      },


    } 

我们如何使用序列化程序处理返回的数据,以及如何访问进入序列化程序的查询集?

您所需的输出不再是真正的模型序列化程序,例如,您完全失去了材质和存储之间的关系

您应该考虑建立自己的字典,然后将其转换为自定义JSON,并将其作为响应传递,如这里所解释的: