У моїй користувацькій моделі є кілька полів, які є полями вибору, і я намагаюся зрозуміти, як найкраще реалізувати це в 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': 'newuser@email.com',
'first_name': 'first',
'last_name': 'last',
'gender': 'Male'
// instead of 'gender': 'M'
}
Як би я це зробив? Наведений вище код не працює. Раніше у мене щось подібне працювало для GET, але для POST / PUT це давало мені помилки. Я шукаю загальну пораду, як це зробити, здається, це було б щось загальне, але я не можу знайти приклади. Або це, або я роблю щось жахливо неправильне.