DRF TimeZoneField: не сериализуемая ошибка JSON

У меня есть модель django:

from django.db import models
from timezone_field import TimeZoneField

class Client(models.Model):
    time_zone = TimeZoneField(choices_display='WITH_GMT_OFFSET')

А APIView для этой модели:

class ClientAPIView(APIView):
    def get(self, request: Request, pk: int, format=None) -> Response:

        client = get_object_or_404(Client, pk=pk)
        client_serializer = ClientListSerializer(client)
        return Response(client_serializer.data)

Я получаю ошибку при GET-запросе: TypeError: Object of type ZoneInfo is not JSON serializable

Код сериализатора:

class ClientListSerializer(serializers.ModelSerializer):
    class Meta:
        model = Client
        fields = ('id', 'time_zone')

Как исправить код модели, сериализатора или представления (не знаю, что именно) так, чтобы вместо ZoneInfo была просто строка

Django 4.0+

Django 4.0 делает zoneinfo реализацией по умолчанию. Поддержка pytz теперь устарела и будет удалена в Django 5.0.

from zoneinfo import available_timezones

from rest_framework import serializers


class ClientSerializer(serializers.ModelSerializer):
    time_zone = serializers.ChoiceField(choices=available_timezones())

    class Meta:
        model = Client
        fields = ['id', 'time_zone', ]
Вернуться на верх