Как создать сигнал предварительного сохранения в Django? - PullRequest
0 голосов
/ 08 мая 2020
• 1000 Как я могу добиться этого с помощью сигнала предварительного сохранения?

1 Ответ

1 голос
/ 08 мая 2020

Лучше переопределить 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...
...