У меня есть несколько полей в моей модели пользователей, которые являются полями выбора, и я пытаюсь выяснить, как наилучшим образом реализовать это в Django Rest Framework.
Ниже приведен некоторый упрощенный код, чтобы показать, что я делаю.
# models.py
class User(AbstractUser):
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
# serializers.py
class UserSerializer(serializers.ModelSerializer):
gender = serializers.CharField(source='get_gender_display')
class Meta:
model = User
# viewsets.py
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
По сути, я пытаюсь сделать, чтобы методы get/post/put использовали отображаемое значение поля выбора вместо кода, выглядя примерно как JSON ниже.
{
'username': 'newtestuser',
'email': '[email protected]',
'first_name': 'first',
'last_name': 'last',
'gender': 'Male'
// instead of 'gender': 'M'
}
Как бы я это сделал? Вышеприведенный код не работает. Раньше у меня было что-то подобное для GET, но для POST/PUT это давало мне ошибки. Я ищу общие советы о том, как это сделать, похоже, что это будет что-то общее, но я не могу найти примеры. Либо это, либо я делаю что-то ужасно неправильно.