class MyField(serializers.IntegerField):def __init__(self, method_name=None, **kwargs):self.method_name = method_namesuper().__init__(**kwargs)def bind(self, field_name, parent):if self.method_name is None:self.method_name = "get_{field_name}".format(field_name=field_name)super().bind(field_name, parent)def get_attribute(self, instance):method = getattr(self.parent, self.method_name)return method(instance)def to_representation(self, value):return str(value)class CreateSerializer(serializers.ModelSerializer):gender = MyField()class Meta:model = models.Userfields = ["id", "username", "age", "gender", "depart"]extra_kwargs = {"id": {"read_only": True},"age": {"write_only": True}}def get_gender(self, obj):return obj.get_gender_display()class CreateUserView(APIView):def post(self, request, *args, **kwargs):print(request.data, type(request.data))ser = CreateSerializer(data=request.data)if ser.is_valid():print(ser.validated_data)ser.save()return Response(ser.data)else:print("视图", ser.errors)return Response(ser.errors)