Проверка необязательного поля в зефире - PullRequest
0 голосов
/ 22 апреля 2019

В моей модели есть поле, которое требуется в теле ресурса при создании ресурса (POST) и не передается в теле запроса (будет передаваться вместе с URL) при обновлении ресурса (PUT).

Я создал свою модель зефира:

class DummySchema():
   field_1 = fields.Str(required=True)
   field_2 = fields.Id()

Если я оставлю поле_1 на required=True, я получу следующую ошибку на PUT:

{
    "message": {
        "field_1": [
            "Missing data for required field."
        ]
    }
}

Я мог бы оставить это обязательным в модели, но это означало бы, что это вызовет проблему в запросе POST.

Есть ли способ, которым я мог бы установить поле как необязательное, но установить его как обязательное для моего запроса POST, чтобы я мог выполнить проверку?

1 Ответ

0 голосов
/ 22 апреля 2019

Думаю, мне следовало бы внимательно прочитать документацию раньше: (

Я мог бы установить поле как partial, поэтому, когда он выполнит проверку, зефир пропустит поле

data, errors = DummySchema().load({'field_2': 42}, partial=('field_1',))

REF: https://marshmallow.readthedocs.io/en/2.x-line/quickstart.html#validation

...