Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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_Json_Django_Serialization_Django Rest Framework - Fatal编程技术网

Python Django REST框架:嵌套序列化程序未序列化

Python Django REST框架:嵌套序列化程序未序列化,python,json,django,serialization,django-rest-framework,Python,Json,Django,Serialization,Django Rest Framework,我对Django REST框架嵌套序列化程序有点纠结 我有一个名为ProductSerializer的序列化程序。它是serializers.ModelSerializer,单独使用时正确生成以下输出: {'id':1,'name':'name of the product'} 我正在构建购物车/购物篮功能,目前我拥有以下类: class BasketItem: def __init__(self, id): self.id = id self.prod

我对Django REST框架嵌套序列化程序有点纠结

我有一个名为ProductSerializer的序列化程序。它是serializers.ModelSerializer,单独使用时正确生成以下输出:

{'id':1,'name':'name of the product'}

我正在构建购物车/购物篮功能,目前我拥有以下类:

class BasketItem:

    def __init__(self, id):
        self.id = id
        self.products = []
和序列化程序:

class BasketItemSerializer(serializers.Serializer):
   id = serializers.IntegerField()
   products = ProductSerializer(many=True)
我有一个涉及以下代码的测试用例:

products = Product.objects.all()  # gets some initial product data from a test fixture

basket_item = BasketItem(1)  # just passing a dummy id to the constructor for now
basket_item.products.append(products[0])
basket_item.products.append(product1[1])

ser_basket_item = BasketItemSerializer(basket_item)
上面的产品是models.Model。现在,当我

print(ser_basket_item.data)

{'id': 1, 'products': [OrderedDict([('id', 1), ('name', 'name of the product')]), OrderedDict([('id', 2), ('name', 'name of the product')])]}
我所期望的是:

{
    'id': 1,
    'products': [
        {'id': 1, 'name': 'name of the product'}
        {'id': 2, 'name': 'name of the product'}
    ]
}
你认为我哪里出错了?

一切都很好

很简单,为了保持顺序,DRF不能使用基本字典,因为它们不遵守顺序。在这里,您看到的是一个OrderedDict


渲染器将处理该问题并输出正确的值。

好吧。在这里,我在咒骂django,他做得比我实际要求的更好。通过json.dumps确认是的,先生,您确实是对的:)谢谢!