如何使用Deform和Colander实现文件上传可选?
我想要创建一个表单,这个表单里包含一系列文件,代表一个产品的不同图片。提供这些文件是可选的,所以即使没有文件,表单也应该能通过验证。我该怎么做呢?
这是我使用的colander模式:
import colander
import deform
from deform import Form
from deform import ValidationFailure
from deform.interfaces import FileUploadTempStore
tmpstore = FileUploadTempStore()
class Image(colander.Schema):
image = colander.SchemaNode(
deform.FileData(),
widget=deform.widget.FileUploadWidget(tmpstore)
)
class Images(colander.SequenceSchema):
images = Image()
class ProductSchema(colander.Schema):
completename = colander.SchemaNode(colander.String(), title="Complete Name")
description = colander.SchemaNode(colander.String(),
widget = deform.widget.TextAreaWidget())
images = Images()
schema = ProductSchema()
form = Form(schema, buttons=("submit", ))
我试着添加一个'missing'参数,像这样:
image = colander.SchemaNode(
deform.FileData(),
missing = ???
widget=deform.widget.FileUploadWidget(tmpstore)
)
我觉得当我这样做的时候,似乎可以正常工作:
missing={'filename': None, 'uid':None}
但我真的不确定这样做是否正确……
谢谢!
1 个回答
5
你可以试试用“missing = colander.null”。