你可以用几种方法
方法-1:
覆盖
save()
方法
Period
模型组件
from django.core.exceptions import ValidationError
class Period(models.Model):
number = models.PositiveIntegerField(primary_key=True)
start_time = models.TimeField()
end_time = models.TimeField()
def save(self, *args, **kwargs):
if self.end_time < self.start_time:
raise ValidationError("some message")
super().save(*args, **kwargs)
方法-2:
覆盖
clean()
模型的方法
from django.core.exceptions import ValidationError
class Period(models.Model):
number = models.PositiveIntegerField(primary_key=True)
start_time = models.TimeField()
end_time = models.TimeField()
def clean(self):
super().clean() # calling default cleaning
if self.end_time < self.start_time:
raise ValidationError("some message")
方法-3:
覆盖
full_clean()
方法
from django.core.exceptions import ValidationError
class Period(models.Model):
number = models.PositiveIntegerField(primary_key=True)
start_time = models.TimeField()
end_time = models.TimeField()
def full_clean(self, exclude=None, validate_unique=True):
super().full_clean(exclude=None, validate_unique=True) # calling default full_clean
if self.end_time < self.start_time:
raise ValidationError("some message")
参考
1。
Model.clean() - Django doc
2。
Model.save() - Django doc
三。
Model.full_clean() - Django doc