Можно ли объединить свойство исключений со свойством по умолчанию цербера? - PullRequest
0 голосов
/ 29 апреля 2019

Когда я использую cerberus для проверки ввода данных, у меня возникает проблема, потому что я использую ключ по умолчанию для настройки значения, но в той же схеме я использую другое поле со свойством, исключающим указание на поле, которое имеет значение по умолчанию.

Это конфигурация схемы, которую я использую:

# -*- coding: utf-8 -*-
# !/usr/bin/env python3

from src.helpers.date_helper import DateHelper


initial_date = DateHelper().get_first_day_of_working_week()

schema = {
    "initial_date": {
        "type": "string",
        "regex": r"\d{4}[-/]\d{2}[-/]\d{2}",
        "default": initial_date,
        "dependencies": "final_date",
    },
    "final_date": {
        "type": "string",
        "regex": r"\d{4}[-/]\d{2}[-/]\d{2}",
        "default": DateHelper().get_final_day_of_working_week(initial_date),
        "dependencies": "initial_date"
    },
    "days": {
        "type": "integer",
        "default": "7",
        "coerce": lambda x: int(x),
        "excludes": ["final_date", "initial_date"],
    },
    "latitude": {
        "type": "number",
        "required": True,
        "coerce": lambda x: float(x),
        "dependencies": "longitude",
    },
    "longitude": {
        "type": "number",
        "required": True,
        "coerce": lambda x: float(x),
        "dependencies": "latitude",
    },
}

Когда я выполняю проверку для этой конфигурации: {"days": "15", "latitude": "-9.97","longitude": "-67.81"}

Ответ, который я получаю:{'days': ["'final_date', 'initial_date' must not be present with 'days'"]}

Я хотел бы знать, как можно использовать значение по умолчанию и исключить свойство без изменения механизма проверки.

...