首页 > 解决方案 > 有必要在 Django rest 框架中使用序列化吗?

问题描述

是否有必要在 Django rest 中使用序列化程序?我正在构建一个项目,在该项目中遇到了表单中的字段动态添加的场景,然后我需要验证数据并将其保存到数据库中。由于表单中的字段是动态的,我们如何在序列化程序中处理这个?我们可以在不使用序列化的情况下进行验证和保存吗?

标签: djangodjango-rest-frameworkdjango-serializer

解决方案


没有必要使用序列化程序。你可以在一个视图中做你想做的事情。但是,序列化程序可以帮助您很多。如果您不想使用序列化程序,可以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也可以帮助你。


推荐阅读