如何在Django REST Framework中返回自定义JSON输出

我试图返回具有以下结构的自定义json

[ { 
'yesterday': [{'teams': "team a -team b",'start_time': "0: 11",'pick': "X2",'score': "1:4",'odds': 1.25,'won_or_lost': "won",'date': "2019-01-8"}],'today': [{'teams': "team a -team b",'tomorrow': [{'teams': "team a -team b",'date': "2019-01-8"}]
}]

以下是我的代码:

serializer.py

class GamesSerializer(serializers.Serializer):
    class Meta:
        model = AllGames
        fields = ('teams','start_time','pick','score','odds','won_or_lost','date')


class GamesViewSet(viewsets.ModelViewSet):
    today_date = date_picker

    yesterday = AllGames.objects.filter(
        date=today_date(-1)).order_by('start_time','teams')
    today = AllGames.objects.filter(
        date=today_date(0)).order_by('start_time','teams')
    tomorrow = AllGames.objects.filter(
        date=today_date(1)).order_by('start_time','teams')

    queryset = [yesterday,today,tomorrow]
    serializer_class = GamesSerializer

电流输出

[
    {},{},{}
]

如何修改我的 GamesSerializer 以返回自定义输出,如上所示。

RENXIAODUO87 回答:如何在Django REST Framework中返回自定义JSON输出

您可以将响应类从DRF ModelViewSet转换为ViewSet。 然后,您可以通过覆盖retrieve

进一步解析返回数据之前的数据

如此处所述:https://www.django-rest-framework.org/api-guide/viewsets/#example

,

对于试图找到答案的任何人,我使用Viewset代替@jay-vasant建议的ModelViewSet,然后使用上面的overrode list方法自定义输出,如我所愿。 这是我的GamesViewSet更新后。

class GamesViewSet(viewsets.ViewSet):
def list(self,request):
    today_date = date_picker

    yesterday = AllGames.objects.filter(
        date=today_date(-1)).order_by('start_time','teams')
    today = AllGames.objects.filter(
        date=today_date(0)).order_by('start_time','teams')
    tomorrow = AllGames.objects.filter(
        date=today_date(1)).order_by('start_time','teams')

    queryset = [yesterday,today,tomorrow]
    games = []
    for day in queryset:
        serializer = GamesSerializer(day,many=True)
        games.append(serializer.data)
    return Response(games)

我到那之后的输出。

[
    [{'teams': "team a -team b",'start_time': "0: 11",'pick': "X2",'score': "1:4",'odds': 1.25,'won_or_lost': "won",'date': "2019-01-8"}],[{'teams': "team a -team b",'date': "2019-01-8"}]
 ]

现在已经接近我想要的了。

本文链接:https://www.f2er.com/3159496.html

大家都在问