我有一个简单的问题,我不确定处理它的最佳方法。我有一个定义如下的模式:
class MySchema(Schema):
title = fields.String(required=True)
imageUrl = fields.Url()
Run Code Online (Sandbox Code Playgroud)
imageUrl
是一个可选字段,有时它会是 None/null。如果发生这种情况,没关系,它不需要是有效的 url。但是当我这样做时:
my_schema.load(request.get_json())
Run Code Online (Sandbox Code Playgroud)
在 PUT 的传入数据上,url 字段记录错误: Field may not be null.
我认为partial=True
在调用中使用 load 会起作用,但事实并非如此。我也不喜欢那样,因为这不是部分对象,而是完整对象,碰巧我的某些字段在数据库中可以为空。
我如何让棉花糖在 imageUrl 为非空时验证它,但在它为空时忽略它?
los*_*rje 19
我现在想通了。cdonts 的回答很接近,但对我不起作用。我仔细地重新阅读了文档。default
用于在序列化期间为缺失值提供默认值。
但是,我在反序列化和验证期间遇到了这个问题。也有参数。
的组合allow_none
,并missing
在我的情况下有用,解决我的问题。
小智 5
我赞成@lostdorje 的答案,因为它是正确的,代码示例如下:
class MySchema(Schema):
field_1 = fields.Str(allow_none=True)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8343 次 |
最近记录: |