Python 如何使DRF序列化程序与大写兼容

Python 如何使DRF序列化程序与大写兼容,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,我的老板决定将RESTAPI从*ava迁移到Django。 以前的Java开发人员设计了camelCase中的每个数据库字段,例如userName,以及camelCase中的每个API POST数据 当我将这些重构为DRF时,我得到了以下模型。REST API在camelCase中也接收post数据,因此我必须降低post数据,否则is\u valid()将返回False class Useraccount(models.Model): username = models.CharFie

我的老板决定将RESTAPI从*ava迁移到Django。 以前的Java开发人员设计了camelCase中的每个数据库字段,例如
userName
,以及camelCase中的每个API POST数据

当我将这些重构为DRF时,我得到了以下模型。REST API在camelCase中也接收post数据,因此我必须降低post数据,否则
is\u valid()
将返回
False

class Useraccount(models.Model):
    username = models.CharField(db_column='userName')
REST API请求数据:

{
"userName": "Jenny"  # I need lower "userName" to "username"
}

有没有一种方法可以让DRF与大写的POST数据兼容?我不想在每个
APIView

中降低这些
用户名
,不幸的是,我认为没有任何简单的方法可以实现这一点。但是,您可以做的是拥有一个写序列化程序,它将为您完成这项工作

class WriteSerializer(serializers.ModelSerializer):
    userName = serializers.CharField(source='username', write_only=True)
    class Meta:
       model = MyModel
       fields = ['userName']

class ReadSerializer(serializers.ModelSerializer):
    class Meta:
       model = MyModel
       fields = ['username']
我不确定,但您也可以在一个模型中手动指定所有字段,并告诉哪些字段仅为write_,哪些字段仅为ready_,这样做,但我认为这也是大量工作