Мой код
myapp / validators.py
from django.conf import settings
def UIDValdator(obj_uid):
if re.match(settings.UID_REGEX_PATTERN, obj_uid):
return True
raise ValidationError(f"The uid must follow the pattern: {settings.UID_REGEX_PATTERN}")
myapp / models.py
from django.conf import settings
from .validators import UIDValdator
class MyObject(models.Model):
uid = models.CharField(validators=[UIDValidator],....)
...
...
def save(self, *args, **kwargs):
if UIDValidator(self.uid):
super(MyObject, self).save(*args, **kwargs)
Мой вопрос
Я могу sh Я мог бы использовать UIDValidator только один раз, теперь я использую его дважды, потому что если я пытаюсь создать свой объект, используя ORM не будет поднимать исключение, и если я удалю валидацию из моего поля, будет выброшено 500 вместо подчеркивания поля сообщением об ошибке. Обнаружил это, когда начал запускать тесты.
Что мне нужно
Я хочу использовать только метод save () и проверить с ним также форму администратора
class MyObject(models.Model):
uid = models.CharField(....)# exclude the validator here and use only the save() method
...
...
def save(self, *args, **kwargs):
if UIDValidator(self.uid):
super(MyObject, self).save(*args, **kwargs)