Проверка положительной валидации Django не работает

Мне нужно создать это правило валидации, когда Start= (start_new + start_old) >0 или является положительным и End = (end_new + end_old) >0 или является положительным, тогда ошибка валидации выдаст, что "Positive Strat и Positive End не разрешены в конъюнкции",

Но мой код ниже не проверяет правило проверки и разрешает положительные начальные и положительные конечные значения в конъюнкции.

мой код в django form.py

        for i in range(count):
            start_new = int(self.data.get(f'applicationruntime_set-{i}-start_new') or 0)
            start_old = int(self.data.get(f'applicationruntime_set-{i}-start_old') or 0)
            end_new = int(self.data.get(f'applicationruntime_set-{i}-end_new') or 0)
            end_old = int(self.data.get(f'applicationruntime_set-{i}-end_old') or 0)
            if (start_new + start_old) > 0 and (end_new+end_old) > 0:
                raise ValidationError(
                    f" Positive Start  values and Positive End  values are not allowed to be used in conjunction")

Попробуйте изменить приоритет:

((start_new + start_old) > 0) and ((end_new+end_old) > 0) 

но этот способ лучше:

(start_new > start_old) and (end_new > end_old)

И, конечно, ООП намного лучше:

if not self.date_range_is_valid():
    ...

и где-то вы должны определить метод date_range_is_valid. Это поможет вам иметь метод валидации и изменять его по требованию бизнеса.

Вернуться на верх