Лучше переопределить clean()
(который, например, не вызывается, если вы вызываете .save()
напрямую) или save()
в вашей модели:
class VerificationTokenModel(BaseModel):
# ...
def save(self, **kwargs):
if not self.pk: # Do check only on initial save
self._check_pre_save()
return super().save(**kwargs)
def _check_pre_save(self):
if VerificationTokenModel.objects.filter(user=self.user, expiry_time__gt=now() - timedelta(minutes=5)).exists():
raise ValidationError("Too soon!")
# and other conditions...