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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使DRF串行器与大写字母兼容相关的知识,希望对你有一定的参考价值。

我的老板决定将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

答案

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

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

以上是关于如何使DRF串行器与大写字母兼容的主要内容,如果未能解决你的问题,请参考以下文章

如何在 omp 并行中使特定部件串行?

如何将 DRF 序列化器与 Graphene 一起使用

如何使用带有串行内循环的openMP并行化外循环以进行数组添加

如何在 C# 中实现串行端口通信以控制现金存款机 [关闭]

Java:如何更改文本区域中特定行或字符串行的颜色?

JS函数的串行调用