python-3.x - 我们可以在序列化程序类本身中强制使用任何一个序列化程序字段吗?
问题描述
我有一个序列化程序类,我想主要使用它来获取请求数据并使用它来保存不同模型中的详细信息。我想在请求正文中包含一个或两个参数。我可以在我的 中处理它views.py
,但我想知道有没有一种方法可以让我们在序列化程序类本身内部检查其中一个或两个?
提前致谢 :)
#serializers.py
class ScanUpdateSerializer(serializers.Serializer):
assets = serializers.ListField(child=serializers.DictField())
issues = serializers.ListField(child=serializers.DictField())
解决方案
如果您想强制这两个字段中的任何一个,您可以使用 validate 方法来检查并强制执行它。
例如
from rest_framework.exceptions import ValidationError
class ScanUpdateSerializer(serializers.Serializer):
assets = serializers.ListField(child=serializers.DictField())
issues = serializers.ListField(child=serializers.DictField())
def validate(self, attrs):
if not ("assets" in self.initial_data or "issues" in self.initial_data):
raise ValidationError("Either assets or issues need to be set.")
return attrs
推荐阅读
- flutter - Flutter中如何将GridView的Container高度设置为“auto”
- php - 如何直接从亚马逊 s3 下载文件?
- python - 黑体问题和卡方最小化误差
- javascript - 在 React 功能组件中使用 bindActionCreators 和 mapDispatchToProps 给我 undefined
- python - 在python中解析具有多个根的xml数据
- linux - 如何在网卡太新而驱动程序无法包含在任何发行版中的机器上安装 Linux
- python - 在熊猫数据框中保留仅在一个组中的重复值,如果值在其他值之后重复,则打印一些消息
- three.js - three.js + imgui-js 项目中的场景渲染问题
- tinymce - TinyMCE 不适用于所有类似页面
- python-3.x - Python 迭代器 | 谷歌云日志