簡體   English   中英

Django REST Framework:嵌套序列化程序未序列化

[英]Django REST Framework: nested serializer not serializing

我對Django REST Framework嵌套序列化程序有點不滿意。

我有一個稱為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。

渲染器將​​處理此問題並輸出正確的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM