Здравствуйте! Пытаюсь провалидировать json, точнее словарь, полученный его декодированием:
from schematics.exceptions import ValidationError
from schematics.models import Model
from schematics.types import DateTimeType
class TimeIntervalData(Model):
start = DateTimeType(formats='%H:%M')
end = DateTimeType(formats='%H:%M')
def check_interval(self, start, end):
if start > end:
raise ValidationError('Error')
def validate_start(self, data, value):
self.check_interval(data['start'], data['end'])
time_interval = {'start': '09:00', 'end': '12:00'}
model = TimeIntervalData(time_interval)
model.validate()
На выходе получается такая ошибка:
Traceback (most recent call last):
File "/home/stright/desktop/test/test.py", line 21, in <module>
model.validate()
File "/home/stright/desktop/test/env/lib/python3.5/site-packages/schematics/models.py", line 259, in validate
strict=strict)
File "/home/stright/desktop/test/env/lib/python3.5/site-packages/schematics/validate.py", line 51, in validate
instance_errors = _validate_model(cls, data)
File "/home/stright/desktop/test/env/lib/python3.5/site-packages/schematics/validate.py", line 80, in _validate_model
cls._validator_functions[field_name](cls, context, value)
File "/home/stright/desktop/test/test.py", line 15, in validate_start
self.check_interval(data['start'], data['end'])
TypeError: check_interval() missing 1 required positional argument: 'end'
Почему возникает такая ошибка? Ведь я вызываю метод check_interval в контексте self, но почему-то первым аргументом он не передается?