Tôi có một vài trường trong mô hình người dùng của mình là các trường lựa chọn và tôi đang cố gắng tìm ra cách tốt nhất để triển khai thực hiện điều đó vào khung công tác Django Rest.Khung Django Rest với ChoiceField
Dưới đây là một số mã được đơn giản hóa để 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á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': '[email protected]',
'first_name': 'first',
'last_name': 'last',
'gender': 'Male'
// instead of 'gender': 'M'
}
Tôi sẽ làm như thế nào? Đ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 làm việc cho GET, nhưng đối với POST/PUT nó đã cho tôi lỗi. Tôi đang tìm kiếm lời khuyên chung về cách làm điều này, có vẻ như nó sẽ là một cái gì đó phổ biến, nhưng tôi không thể tìm thấy ví dụ. Hoặc là tôi đang làm điều gì đó khủng khiếp sai.
Bạn đã thử http://www.django-rest-framework.org/api-guide/fields/#serializermethodfield – DAKZH