Проверка положительной валидации 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
. Это поможет вам иметь метод валидации и изменять его по требованию бизнеса.