Почему 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. Вы можете использовать его таким образом, но на самом деле не должны, поэтому я предлагаю переименовать переменную, если это возможно