如何使DRF串行器与大写兼容

时间:2019-10-24 07:57:07

标签: python django django-models django-rest-framework

我的老板决定将 Rest API 从* ava迁移到 Django 。 以前的Java专家设计了camelCase中的每个数据库字段(例如userName)和camelCase中的每个API POST数据。

当我将它们重构为 DRF 时,我遵循了Model。 REST API还通过camelCase接收发布数据,因此我必须降低发布数据,否则is_valid()将返回False

class Useraccount(models.Model):
    username = models.CharField(db_column='userName')

REST API请求数据:

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

是否存在让 DRF 与大写POST数据相适应的方法?我不想在每个userName中降低这些APIView

1 个答案:

答案 0 :(得分:0)

不幸的是,我认为没有任何简单的方法可以实现这一目标。但是,您可以做的是拥有一个写串行器,它将为您完成此操作。

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_only哪个字段是ready_only来做到这一点,但是我认为这也是很多工作。