[英]How to perform object level validation in Django Rest Framework?
serializer.py :
class ExamTermSerializer(serializers.Serializer):
name = serializers.CharField()
start_date = serializers.DateField()
end_date = serializers.DateField()
course = serializers.IntegerField()
_class = serializers.IntegerField()
def validate(self,data):
if data['start_date'] > data['end_date']:
raise serializers.ValidationError("Start Date Should be smaller")
return data
views.py :
###Bunch of code..
_exm,c = ExamTerm.objects.get_or_create(name = data['name'],
defaults = {
'start_date':data['start_date'],
'end_date':data['end_date'],
'course_id':data['course'],
'_class_id':data['_class']
})
if not c:
raise serializers.ValidationError({
"Detail":['Exam With This name Already Exist']
})
return Response(data , status=status.HTTP_201_CREATED)
當我在DRF中搜索對象級別驗證時,我發現我在序列化程序中編寫的驗證功能(即validate
)。
我的實際問題是如何從視圖實現此validate
功能,以便start_date
始終小於end_date
。
您需要覆蓋ExamTerm
模型的save()
方法
def save(self,*args,**kwargs):
if not self.start_date > self.end_date:
super(ExamTerm,self).save(*args,**kwargs)
else:
raise ValidationError('start date can not be greater than end date')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.