2016-01-09 3 views
0

У меня есть простая проблема, и я не уверен, что это лучший способ справиться с этим. У меня есть схема определяется следующим образом:Обработка дополнительной проверки поля

class MySchema(Schema): 
    title = fields.String(required=True) 
    imageUrl = fields.Url() 

imageUrl поле не является обязательным, иногда это будет None/нуль. Если это произойдет, это нормально, и он не должен быть действительным URL-адресом. Но когда я делаю:

my_schema.load(request.get_json()) 

на входящих данных, PUT, поле URL записывает ошибку: Field may not be null.

Я думал, используя partial=True в вызове загрузки будет работать, но это не так. Мне также это не понравилось, потому что это не частичный, это полный объект, так что некоторые мои поля имеют NULL в базе данных.

Как получить зефир для проверки изображенияUrl, когда он не равен null, но игнорировать его, когда он равен нулю?

ответ

1

Я понял это сейчас. Ответ cdonts был близок, но не работал для меня. Я внимательно прочитал документы. default используется для предоставления значения по умолчанию для отсутствующих значений во время сериализации .

Однако я столкнулся с проблемой во время десериализации и проверки времени. Для этого есть и параметры.

Сочетание allow_none и missing было полезным в моей ситуации и решило мою проблему.

0

Я думаю, вы должны указать значение по умолчанию.

class MySchema(Schema): 
    title = fields.String(required=True) 
    imageUrl = fields.Url(default=None) 

Надеюсь, это поможет!

+0

Спасибо, но, к сожалению, это не сработает. Если запрос появляется в файле imageUrl = None, значение по умолчанию не имеет эффекта, и проверка еще не завершена. Если запрос приходит с полным отсутствием образаUrl, тогда нет ошибки проверки, но ключ не добавляется к загруженному запросу. – lostdorje

Смежные вопросы