Почему React Native получает models.TextChoices из Django как кортеж, преобразованный в строку?

У меня есть такая модель выбора текста

 class PostType(models.TextChoices):
    DECLARE = 'DECLARE'
    UPDATE = 'UPDATE'
    SUCCESS = 'SUCCESS'

по какой-то причине на мобильном фронтенде он возвращается как

 LOG  ('UPDATE', 'Update')
 LOG  string

Это говорит мне о том, что Django отправляет его как кортеж ('<type all caps>', '<type camel case>'), а затем React Native преобразует его в строку и печатает в таком виде. Почему это происходит? Как я могу просто заставить его вернуть 'Declare', 'UPDATE' или 'SUCCESS' на мобильную сторону?

Вы можете найти ответ здесь: https://stackoverflow.com/a/28954424/1935069

Это немного зависит от того, какую версию DRF и Django вы используете. Я бы поступил следующим образом: явно модифицировал сериализатор, чтобы использовать поле serializers.SerializerMethodField и получить отображаемое значение для поля choices следующим образом:

class FullPostDataSerializer(serializers.ModelSerializer):
    ... # your existing code goes here
    type = serializers.SerializerMethodField()

    def get_type(instance):
        return instance.type.value

    ...

Это должно вернуть правильное значение в сериализаторе.

Еще одно замечание: type - это зарезервированное ключевое слово в python. Вы можете использовать его таким образом, но на самом деле не должны, поэтому я предлагаю переименовать переменную, если это возможно

Вернуться на верх