#django
#django
Вопрос:
Я нашел фрагмент кода, где использовался KeysValidator, но я не понял, что делает id, поэтому я прочитал документацию https://docs.djangoproject.com/en/3.1/ref/contrib/postgres/validators / и я до сих пор этого не понимаю.
Может кто-нибудь объяснить, если у нас есть JSONField, что такое KeysValidator?
Ответ №1:
Это валидатор, который используется для JSONField
проверки, является ли большой двоичный объект JSON словарем с (по крайней мере) заданными ключами или списком с заданными значениями.
Если вы укажете strict=True
, он будет проверять только словари и список, которые содержат именно эти ключи / значения.
Например:
KeysValidator(keys=['a', 'b'])({'a': 4, 'b': 2}) # valid
KeysValidator(keys=['a', 'b'])({'a': 4}) # ValidationError: ['Some keys were missing: b']
KeysValidator(keys=['a', 'b'])({}) # ValidationError: ['Some keys were missing: b, a']
KeysValidator(keys=['a', 'b'])([]) # ValidationError: ['Some keys were missing: b, a']
KeysValidator(keys=['a', 'b'])(['a', 'b']) # succeeds
KeysValidator(keys=['a', 'b'])(['a', 'b', 'c']) # succeeds
KeysValidator(keys=['a', 'b'], strict=True)({'a': 4, 'b': 2, 'c': 3}) # ValidationError: ['Some unknown keys were provided: c']
KeysValidator(keys=['a', 'b'], strict=True)({'a': 4, 'b': 2}) # succeeds
KeysValidator(keys=['a', 'b'], strict=True)({'a': 4, 'c': 3}) # ValidationError: ['Some keys were missing: b']
KeysValidator(keys=['a', 'b'], strict=True)(['b', 'a']) # succeeds
KeysValidator(keys=['a', 'b'], strict=True)(['b', 'a', 'c']) # ValidationError: ['Some unknown keys were provided: c']
Хотя это также работает со списками или строками, идея заключается в том, что это, вероятно, используется только для словарей.