Задать вопрос
@Pythonist

Поччему в JSON ответе API Django отдаются строки, а не float?

Здравствуйте. Есть проект на Django Rest Framework. Почему то респонс отдает значения не в формате float, или еще чего .а строк. не могу понять почему. Вот мой сериализатор

class WalletSerializer(serializers.ModelSerializer):
    coin = serializers.ReadOnlyField(source='coin_id.symbol')
    
    class Meta:
        fields = ('coin', 'amount_w', 'amount_d',
                  'cap_w', 'cap_d', 'bip_value')
        model = Wallet


и вью

class WalletView(viewsets.ViewSet):
    lookup_field = 'wallet_mx'
    def retrieve(self, request, wallet_mx):
        queryset = User.objects.all()
        user = get_object_or_404(queryset, wallet_mx=wallet_mx)
        serializer = UserWalletSerializer(user)
        return Response(serializer.data)


В БД все хранится в Decimal, везде рассчеты с float или Decimal, а в респонсе отдается все в формате строк.

{
            "coin": "KARMA",
            "amount_w": "0.0000",
            "amount_d": "0.0103",
            "cap_w": "0.0000",
            "cap_d": "0.0000",
            "bip_value": "359.5048"
        }


Почему так, куда смотреть, что править? Спасибо
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
В DRF по умолчанию тип Decimal сериализуется в строку. Отключить можно настройкой COERCE_DECIMAL_TO_STRING.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы