Пользовательская функция проверки django
я написал функцию проверки для атрибута, правильно ли это, и как мне написать для того же атрибута с пустым = True, а поле add_1 обязательно, любые условия для добавления
add_1 = models.CharField(max_length=255)
add_2 = models.CharField(max_length=255, blank=True)
Примечание . Все валидаторы должны возвращать значение True или False.
валидаторы.py
def validate_add_1(value):
if value is not None:
try:
if len(value) <= 255:
return True
except ValidationError:
return False
2 ответа
Согласно Model Reference, когда вы добавляете атрибут «blank=True» к любому полю модели, это поле становится необязательным. Если вы хотите, чтобы поле было обязательным, не указывайте пустой атрибут, так как значение по умолчанию пусто =False.
Для валидатора я не уверен, что вы пытаетесь сделать, но вы можете попробовать что-то вроде этого:
def validate_add_1(value):
val_len = False if len(value) > 255 else True
# Return True if value is not blank/null and length of value <= 255
return True if val_len and (value and value != '') else False
Редактировать
Чтобы упростить приведенный выше код для понимания:
def validate_add_1(value):
# If length of value > 255, return False, else check for blank = True
if len(value) > 255:
return False
else:
# If value is not blank, AND value is not an empty string.
# This is for checking blank = True condition is satisfied.
if value and value != '':
return True
else:
return False
def validate_add_2(value):
val_len = False if len(value) > 255 else True
return True if value == '' or (value and val_len) else False
Это работает?