def validate(self, data):
datasource = self.initial_data
# Convert incoming string dates into date objects for validation
for date_key in ["cycle_end_date", "cycle_deadline_date", "cycle_start_date"]:
date = datasource.get(date_key, None)
if date:
datasource[date_key] = datetime.strptime(date, '%Y-%m-%d').date()
# Update our current data if we have any with new data
if self.instance:
instance_data = self.instance.__dict__
instance_data.update(datasource)
datasource = instance_data
# Validate our dates are in a chronologically sound order
if datasource.get("cycle_end_date") < datasource.get("cycle_start_date"):
raise serializers.ValidationError("Cycle start date must be before cycle end date")
if datasource.get("cycle_end_date") < datasource.get("cycle_deadline_date"):
raise serializers.ValidationError("Cycle deadline date must be on or before the cycle end date")
if datasource.get("cycle_deadline_date") < datasource.get("cycle_start_date"):
raise serializers.ValidationError("Cycle deadline date must be after cycle start date")
return data
评论列表
文章目录