django - 有必要在 Django rest 框架中使用序列化吗?
问题描述
是否有必要在 Django rest 中使用序列化程序?我正在构建一个项目,在该项目中遇到了表单中的字段动态添加的场景,然后我需要验证数据并将其保存到数据库中。由于表单中的字段是动态的,我们如何在序列化程序中处理这个?我们可以在不使用序列化的情况下进行验证和保存吗?
解决方案
没有必要使用序列化程序。你可以在一个视图中做你想做的事情。但是,序列化程序可以帮助您很多。如果您不想使用序列化程序,可以APIView
在基于函数的视图中继承。但是,序列化程序是第一道防线,可以验证您的数据。如果您避免验证,最迟可能在数据库中发生异常。只有模型序列化器或模型表单可以验证您的数据并使用您所做的模型设置。您可以手动验证数据并编写自定义验证器。
您可以绕过序列化程序中的验证。你必须做的是覆盖to_internal()
.
串行器
def to_internal(self, data):
return data
def create(self, data):
# do your saving stuff
return saved_instance
如果request.data
包含属于您的模型但并不总是属于您请求的数据的字段,您可以设置
class Meta:
extra_kwargs = {'field_that_is_not_mandatory': {'required': True}}
也许api也可以帮助你。
推荐阅读
- python - 如何使用 xarray 绘图功能将多个 xarray DataArray 对象绘制成一个图形?
- c# - 我的程序有两个接口,并且都有一个同名的方法。那么,我们如何在继承这两个接口的子类中实现它们呢?
- python - 在python中查找哪些点属于DBSCAN中的集群
- git - Git:提交消息以将master合并到分支中
- apache-kafka-streams - Kafka Streams Window Store 保留重复项
- scikit-learn - featureUnion vs columnTransformer?
- javascript - 为什么我不能按对象的实例排序?
- c# - 将 XmlDocument 保存到文件时如何避免编写 BOM?
- android - Picasso 第一次不上传图片,第二次尝试如果
- python-3.x - 如何使用 GEKKO 在模型预测控制应用程序中管理采样和命令时间