Serializer处理嵌套对象

时间:2013-02-18 14:44:43

标签: django django-rest-framework

使用Django REST framework我在下面有以下序列化程序。我想将(嵌套的)相关对象(ProductCatSerializer)添加到ProductSerializer。我试过以下......

class ProductCatSerializer(serializers.ModelSerializer):
    class Meta:
        model = ProductCat
        fields = ('id', 'title')

class ProductSerializer(serializers.ModelSerializer):
    """
    Serializing the Product instances into representations.
    """
    ProductCat = ProductCatSerializer()

    class Meta:
        model = Product
        fields = ('id', 'title', 'description', 'price',)

所以我想要发生的是产品,以显示嵌套在结果中的相关类别。

谢谢。

更新

使用depth = 2选项(感谢Nandeep Mali)我现在获取嵌套值,但它们只显示使用ID而不是keyparis,就像json请求的其余部分一样(请参阅类别如下)。它几乎是正确的。

"results": [
        {
            "id": 1, 
            "title": "test ", 
            "description": "test", 
            "price": "2.99", 
            "product_url": "222", 
            "product_ref": "222", 
            "active": true, 
            "created": "2013-02-15T15:49:28Z", 
            "modified": "2013-02-17T13:05:28Z", 
            "category": [
                1, 
                2
            ], 

1 个答案:

答案 0 :(得分:1)

您的示例几乎是正确的,除了您应该调用字段'productcat'(或调用模型关系,但没有CamelCase),并将其添加到您的字段中。

class ProductCatSerializer(serializers.ModelSerializer):
    class Meta:
        model = ProductCat
        fields = ('id', 'title')

class ProductSerializer(serializers.ModelSerializer):
    """
    Serializing the Product instances into representations.
    """
    productcat = ProductCatSerializer()

    class Meta:
        model = Product
        fields = ('id', 'title', 'description', 'price', 'productcat')