Зефир Зависимость от поля - PullRequest
0 голосов
/ 21 октября 2018

У меня очень уникальная проблема, и после поиска в Интернете я не могу найти решение, которое ищу.Мне нужно создать зависимость между полями.т.е. если вы предоставляете значение для field1, тогда вы ДОЛЖНЫ предоставлять значения для field2 и field3.все или ничего типа вещей.

class MySchema(Schema):
   field1 = field.String(load_from='field1')
   field2 = field.String(load_from='field2')
   field3 = field.String(load_from='field3')
   other_field = field.String(required=True)

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

@ Джонатан Рис.Это решение, которое у меня изначально было, оно не чистое, но оно работает, но я рекомендую @Jerome Code.

 @pre_load(pass_many=True)
    def validate_existing_account_info(self, data, many):
        print(data)

        #raise ValidationError(data)
        if 'field1' not in data and 'field2' not in data and 'field3' not in data:
            pass
        elif 'field1' in data and 'field2' not in data or 'field3' not in data:
            raise ValidationError("Must provide all the required info")
        elif 'field3' in data and 'field1' not in data or 'field2' not in data:
            raise ValidationError("Must provide all the required info")
        elif 'field2' in data and 'field1' not in data or 'field3' not in data:
            raise ValidationError("Must provide all the required info")
0 голосов
/ 27 октября 2018

Требуется проверка на уровне схемы .

class MySchema(Schema):
    field1 = field.String()
    field2 = field.String()
    field3 = field.String()
    other_field = field.String(required=True)

    @validates_schema
    def validate_required_fields(self, data):
    if 'field1' in data:
        missing_fields = [f for f in ('field2', 'field3') if f not in data]
        if missing_fields:
            raise ValidationError('Missing fields: {}'.format(missing_fields))

(Кстати, не нужно указывать load_from, если это имя поля.)

...