我正在使用 Django Rest Framework 并定义我的 Serializer 类。 Serializer 类正在验证的输入包含两个字段,如下所示:
"absolute_date_range":{
"start":...,
"end":...,
}
"relative_date_range"="last_7"
用户可以选择传递其中一项或两项。但至少必须有一项。如果不是,则应导致验证错误。
required=True
条件仅适用于单个字段。如果我使用自定义逻辑执行此操作,那么这是放置此逻辑的最佳位置 - 序列化程序或 in a Custom Field或 Field level validation ?
我如何在我的序列化程序中执行此操作?
最佳答案
class YourSerializer(serializers.Serializer)
start = serializers.DateTimeField()
finish = serializers.DateTimeField()
def validate(self, data):
"""
Validation of start and end date.
"""
start_date = data['start']
end_date = data['finish']
if not start_date and not end_date:
raise serializers.ValidationError("at least one date input required.")
if other logic:
other logic stuff
return data
这对你来说是更好的解决方案
关于django - 如何验证在序列化/反序列化期间至少存在两个字段之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55108046/