9

我有一个简单的问题,不确定处理它的最佳方法。我有一个定义如下的模式:

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

imageUrl是一个可选字段,有时它会是 None/null。如果发生这种情况,没关系,它不需要是有效的 url。但是当我这样做时:

my_schema.load(request.get_json())

对于 PUT 的传入数据,url 字段记录错误:Field may not be null.

我认为partial=True在调用加载中使用会起作用,但事实并非如此。我也不喜欢这样,因为这不是部分对象,而是完整对象,恰好我的一些字段在数据库中可以为空。

如何让棉花糖在它为非空时验证 imageUrl,但在它为空时忽略它?

4

2 回答 2

21

我现在想通了。cdonts 的答案很接近,但对我不起作用。我仔细阅读了文档。default用于在序列化过程中为缺失值提供默认值。

但是,我在反序列化和验证期间遇到了这个问题。也有参数。

allow_none和的组合missing在我的情况下很有用并解决了我的问题。

于 2016-01-10T03:22:25.893 回答
1

我认为你应该提供一个默认值。

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

希望能帮助到你!

于 2016-01-09T16:00:33.537 回答