Django Rest Framework 的自定义序列化程序
Custom Serializer for Django Rest Framework
我正在寻找一种解决方案来创建序列化程序/API 端点以按自定义顺序表示数据。将序列化器和视图集添加到 DRF 时,我只获得与该模型关联的字段。但我喜欢拥有的是我所有模型的自定义结构。例如:
我有一个模型叫做季节,一个模型叫做晚上,还有一个模型叫做事件。现在我想要一个 API 端点来将它们放在一起,就像这样:
{
"requestTime": "2021-11-09 08:20",
"requestURL": "/all",
"requestMethod": "GET",
"responseCode": 200,
"season": "2021/2022",
"evenings": [
{
"evevning_id": 0,
"day": "",
"date": "2021-11-11",
"event_count": 2,
"events": [
{},
{}
]
}
]
}
对于模型中的数据结构,我有一些外键,例如:
season
|
evening
|
event
有什么实现方法的建议吗?
像这样使用 nested serializer(季节 > 晚上 > 事件)。
class EventSerializer(serializers.ModelSerializer):
class Meta:
model = models.Event
fields = ['id',...]
class EveningSerializer(serializers.ModelSerializer):
events = EventSerializer(many=True)
class Meta:
model = models.Evening
fields = ['id', 'day', 'date','events',...]
class SeasonSerializer(serializers.ModelSerializer):
evenings = EveningSerializer(many=True)
class Meta:
model = models.Season
fields = ['id', 'season', 'evenings',...]
确保从数据库中获取季节时,在查询集中使用 prefetch related。
我正在寻找一种解决方案来创建序列化程序/API 端点以按自定义顺序表示数据。将序列化器和视图集添加到 DRF 时,我只获得与该模型关联的字段。但我喜欢拥有的是我所有模型的自定义结构。例如:
我有一个模型叫做季节,一个模型叫做晚上,还有一个模型叫做事件。现在我想要一个 API 端点来将它们放在一起,就像这样:
{
"requestTime": "2021-11-09 08:20",
"requestURL": "/all",
"requestMethod": "GET",
"responseCode": 200,
"season": "2021/2022",
"evenings": [
{
"evevning_id": 0,
"day": "",
"date": "2021-11-11",
"event_count": 2,
"events": [
{},
{}
]
}
]
}
对于模型中的数据结构,我有一些外键,例如:
season
|
evening
|
event
有什么实现方法的建议吗?
像这样使用 nested serializer(季节 > 晚上 > 事件)。
class EventSerializer(serializers.ModelSerializer):
class Meta:
model = models.Event
fields = ['id',...]
class EveningSerializer(serializers.ModelSerializer):
events = EventSerializer(many=True)
class Meta:
model = models.Evening
fields = ['id', 'day', 'date','events',...]
class SeasonSerializer(serializers.ModelSerializer):
evenings = EveningSerializer(many=True)
class Meta:
model = models.Season
fields = ['id', 'season', 'evenings',...]
确保从数据库中获取季节时,在查询集中使用 prefetch related。