【问题标题】:How to make DRF serializer compatible with uppercase如何使 DRF 串行器与大写兼容
【发布时间】:2020-02-20 12:28:25
【问题描述】:

我的老板决定将 Rest API 从 *ava 迁移到 Django。 以前的Java大佬用camelCase设计了每一个数据库字段,比如userName,每一个API POST数据都是用camelCase设计的。

当我将这些重构为 DRF 时,我得到了以下模型。 REST API 也接收camelCase 格式的post 数据,所以我必须降低post 数据,否则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 DATA 兼容?我不想在每个APIView 中降低这些userName

【问题讨论】:

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


    【解决方案1】:

    不幸的是,我认为没有任何简单的方法可以做到这一点。但是,您可以做的是拥有一个可以为您执行此操作的写入序列化程序。

    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,但我假设这也是很多工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多