我们可以在序列化器 class 本身中强制使用任何一个序列化器字段吗?
Can we make either of the serializer fields compulsory in the serializer class itself?
我有一个序列化程序 class,我想主要用它来获取请求数据并用它来保存不同模型中的详细信息。我想在请求正文中包含一个或两个参数。我可以在我的 views.py
中处理它,但我想知道有没有办法让我们在序列化器 class 本身内部检查其中一个或两个?
提前致谢:)
#serializers.py
class ScanUpdateSerializer(serializers.Serializer):
assets = serializers.ListField(child=serializers.DictField())
issues = serializers.ListField(child=serializers.DictField())
我不知道你到底想做什么,但覆盖方法似乎是这样 def create(self, validated_data)
and/or def update(self, instance, validated_data)
您可以在此处查阅文档:https://www.django-rest-framework.org/api-guide/serializers/#saving-instances
如果你想让这两个字段中的任何一个成为必填字段,你可以使用验证方法来检查和强制执行它。
例如
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
我有一个序列化程序 class,我想主要用它来获取请求数据并用它来保存不同模型中的详细信息。我想在请求正文中包含一个或两个参数。我可以在我的 views.py
中处理它,但我想知道有没有办法让我们在序列化器 class 本身内部检查其中一个或两个?
提前致谢:)
#serializers.py
class ScanUpdateSerializer(serializers.Serializer):
assets = serializers.ListField(child=serializers.DictField())
issues = serializers.ListField(child=serializers.DictField())
我不知道你到底想做什么,但覆盖方法似乎是这样 def create(self, validated_data)
and/or def update(self, instance, validated_data)
您可以在此处查阅文档:https://www.django-rest-framework.org/api-guide/serializers/#saving-instances
如果你想让这两个字段中的任何一个成为必填字段,你可以使用验证方法来检查和强制执行它。
例如
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