Пользовательская функция проверки 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

Это работает?

Другие вопросы по тегам