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