Сериализатор Работа с вложенными объектами
Используя 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')