Сериализатор Работа с вложенными объектами

Используя 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',)

Так что я хочу, чтобы Продукты показывали связанную с ним категорию, вложенную в результаты.

Спасибо.

Обновить:

Используя опцию глубины = 2 (спасибо Nandeep Mali), я теперь получаю вложенные значения, но они показывают только с использованием идентификаторов, а не клавиш, как остальная часть запроса 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 ответ

Решение

Ваш пример был почти верным, за исключением того, что вы должны вызвать поле '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')
Другие вопросы по тегам