Tôi có một số trường trong mô hình người dùng của mình là trường lựa chọn và đang cố gắng tìm ra cách triển khai tốt nhất điều đó vào Django Rest Framework.
Dưới đây là một số mã đơn giản để hiển thị những gì tôi đang làm.
# 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
Về cơ bản những gì tôi đang cố gắng làm là để các phương thức get / post / put sử dụng giá trị hiển thị của trường lựa chọn thay vì mã, trông giống như JSON bên dưới.
{
'username': 'newtestuser',
'email': 'newuser@email.com',
'first_name': 'first',
'last_name': 'last',
'gender': 'Male'
// instead of 'gender': 'M'
}
Làm thế nào tôi sẽ làm điều đó? Đoạn mã trên không hoạt động. Trước khi tôi có một cái gì đó như thế này hoạt động cho GET, nhưng cho POST / PUT, nó đã cho tôi lỗi. Tôi đang tìm lời khuyên chung về cách thực hiện việc này, có vẻ như nó sẽ là một điều gì đó phổ biến, nhưng tôi không thể tìm thấy ví dụ. Hoặc đó hoặc tôi đang làm điều gì đó sai lầm khủng khiếp.