1

我想让使用滤锅制作的模型中的某些字段是可选的。
我熟悉使用,missing=colander.drop但仅在定义 SchemaNode 时才有效。
如果该字段是使用自定义类定义的,例如customeClass = CustomClass(),如何使其成为可选?
以下是片段:

import colander
class Image(colander.MappingSchema):
    url = colander.SchemaNode(colander.String())
    width = colander.SchemaNode(colander.Int())
    height = colander.SchemaNode(colander.Int())

class Post(colander.MappingSchema):
    id = colander.SchemaNode(colander.Int())
    text = colander.SchemaNode(colander.String())
    score = colander.SchemaNode(colander.Int())
    created_time = colander.SchemaNode(colander.Int())
    attachedImage = Image() # I want to make this as optional
4

1 回答 1

2

为了使自定义 Class 对象成为可选对象,我们可以传递相同missing=colander.drop的构造函数参数。

例子:

import colander
class Image(colander.MappingSchema):
    url = colander.SchemaNode(colander.String())
    width = colander.SchemaNode(colander.Int())
    height = colander.SchemaNode(colander.Int())

class Post(colander.MappingSchema):
    id = colander.SchemaNode(colander.Int())
    text = colander.SchemaNode(colander.String())
    score = colander.SchemaNode(colander.Int())
    created_time = colander.SchemaNode(colander.Int())
    attachedImage = Image(missing=colander.drop) # The difference
于 2017-10-07T20:30:33.167 回答