Напишите пользовательскую функцию валидации django
У меня есть поле с именем bar мне нужно написать функцию валидации для проверки этого бара в django какие условия я могу применить к этому и как должна выглядеть моя функция?
Примечание:Пожалуйста, не делитесь ссылками на валидаторы django
models.py
class Model:
bar = models.CharField('Bar', max_length=255, blank=True, null=True)
Вы можете определить функцию, которая будет проверять значение и вызывать ошибку ValidationError [Django-doc] в случае, если условие не верно, так:
from django.core.exceptions import ValidationError
def validate_bar(value):
if not some-condition:
raise ValidationError('Bar should satisfy a certain condition', code='some_code')
тогда вы добавляете эту функцию к validators этого поля
class MyModel(models.Model):
bar = models.CharField('Bar', max_length=255, blank=True, null=True, validators=[validate_bar])
обратите внимание, что валидаторы будут работать только в ModelForms, ModelAdmins, ModelSerializers и т.д. По соображениям производительности Django ORM этого не делает.
def val(v):
if v is not None:
try:
if len(v) <= 255:
return True
except ValidationError:
return False
работает ли это? с balnk = True, null = True и max_length