Я пытаюсь реализовать проверку схемы в моем проекте Django. Я хочу, чтобы он был структурирован, как блок кода ниже Я хочу проверить входной словарь, чтобы убедиться, что есть пара ключ-значение, где значением является некоторый объект пользовательского класса, который я создал где-то еще в своем проекте Python. Я вижу, вы можете создать настраиваемые поля , но я не думаю, что это то, что я хочу сделать, так как я бы не стал менять исходный код этих настраиваемых классов и помещать реализации _serialize()
и _deserialize()
.
Есть ли в Marshmallow или какой-либо другой библиотеке простой способ выполнить эту проверку? Или это лучший способ написать собственный простой метод проверки, который использует встроенные методы, такие как isinstance()
и т.д ..?
from marshmallow import Schema, fields
import logging
logger = logging.getLogger(__name__)
class AnotherObject:
some stuff in here
class ContainerObject:
def __init__(self, input_dict):
if not self._validate(input_dict):
raise Error
def _validate(input_dict: Dict[str, Any]):
class _ContainerObject(Schema):
attribute_one = fields.Int(required=True)
custom_object_value_i_want_to_validate = fields.AnotherObject(required=True)
validation_errors: Dict = None
try:
validation_errors = _ContainerObject().validate(configuration, partial=False)
except Exception as e:
logger.warning(f"Problem validating object schema with error: {e}")
if len(validation_errors) > 0:
logger.info(f"validation error dictionary: {validation_errors}")
return validation_errors == {}