Я бы посоветовал не усложнять схемы. 1) Для правила type
может быть объявлено несколько типов. 2) Правило empty
применяется только к значимым значениям, поэтому оно игнорирует любое заданное целое число. Следовательно, это самые простые возможные правила, установленные для ваших ограничений:
{'type': ('integer', 'string'),
'empty': True}
Имейте в виду, что это не приводит к тому, что значение является пустой строкой, но допускает его использование: vulgo: непустая строка также будет передаваться. Вместо этого вы можете использовать правило max_lengh
с / 1007 * в качестве ограничения.