【问题标题】:Is it necessary to use serializes in Django rest framework?有必要在 Django rest 框架中使用序列化吗?
【发布时间】:2021-07-13 05:57:37
【问题描述】:
在 Django rest 中是否有必要使用序列化程序?我正在构建一个项目,在该项目中遇到了表单中的字段动态添加的场景,然后我需要验证数据并将其保存到数据库中。由于表单中的字段是动态的,我们如何在序列化程序中处理这个?
我们可以在不使用序列化的情况下进行验证和保存吗?
【问题讨论】:
标签:
django
django-rest-framework
django-serializer
【解决方案1】:
没有必要使用序列化程序。你可以在一个视图中做你想做的事情。但是,序列化程序可以帮助您很多。如果您不想使用序列化程序,可以在基于函数的视图中继承 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 也可以帮助您。