【发布时间】:2016-04-25 02:46:53
【问题描述】:
我正在尝试在 Django REST Framework 中设置嵌套序列化程序,但在遵循文档中的简短指南 http://www.django-rest-framework.org/api-guide/relations/#nested-relationships 之后,我在序列化数据中没有变化。
models.py
class Franchise(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
class Item(models.Model):
id = models.AutoField(primary_key=True)
franchise = models.ForeignKey(Franchise, on_delete=None)
title = models.CharField(max_length=255)
初始 serializers.py
class ItemListSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = ('id', 'franchise', 'title')
class FranshiseDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Franchise
fields = ('id', 'name', 'items')
当我使用查询集查询ItemListSerializer 时,我得到预期:
[
{
"id": 1,
"franchise": 1,
"title": "Item 1",
},
{
"id": 2,
"franchise": 1,
"title": "Item 2"
},
{
"id": 3,
"franchise": 2,
"title": "Item 3",
}
]
当我使用预先存在的特许经营对象查询 FranchiseDetailSerializer 时,预期的结果。
{
"id": 1,
"name": "Franchise 1"
}
现在,当我根据 DRF 嵌套关系指南更改 FranchiseDetailSerializer 时:
class FranshiseDetailSerializer(serializers.ModelSerializer):
items = ItemListSerializer(many=True, read_only=True)
class Meta:
model = Franchise
fields = ('id', 'name', 'items')
我希望得到以下结果:
{
"id": 1,
"name": "Franchise 1"
"items": [
{"id": 1, "title": "Item 1", "franchise": 1},
{"id": 2, "title": "Item 2", "franchise": 1}
]
}
但是,我得到没有变化,好像我根本没有更新FranchiseDetailSerializer:
{
"id": 1,
"name": "Franchise 1"
}
对我来说最糟糕的是我没有遇到任何错误,我只是没有看到结果。
感谢您的任何帮助。
【问题讨论】:
标签: python django rest serialization