2016-01-09 57 views
0

我有一個簡單的問題,我不確定處理它的最佳方法。我有一個架構定義如下:處理可選字段驗證

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

imageUrl是一個可選字段,有時它會是None/null。如果發生這種情況,那就沒關係,它不需要成爲有效的網址。但我當我這樣做:

my_schema.load(request.get_json()) 

上放的輸入數據,URL字段中記錄一個錯誤:Field may not be null.

我想在呼叫使用partial=True加載會的工作,但事實並非如此。我也不喜歡這樣,因爲這不是一個部分,它是完整的對象,它只是發生在我的一些字段在數據庫中可以爲空。

如何讓棉花糖在imageUrl非空時驗證,但當它爲空時忽略它?

回答

1

我現在想通了。 cdonts的答案很接近,但沒有爲我工作。我仔細重讀了文檔。 default用於在序列號期間爲缺失值提供默認值。

但是我在反編譯和驗證時遇到問題。也有參數。

allow_nonemissing的組合對我的情況非常有用,並解決了我的問題。

0

我認爲你應該提供一個默認值。

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

希望它有幫助!

+0

謝謝,但不幸的是,這是行不通的。如果請求出現在imageUrl = None中,則默認設置無效,並且驗證仍然失敗。如果在imageUrl完全丟失的情況下發出請求,則不存在驗證錯誤,但密鑰不會添加到加載的請求中。 – lostdorje