我正在尝试创建一个表格来编辑表格中的记录。
以下是我的界面的简要示例:
class ICalibration(Interface):
"""Interface class for Calibration
"""
Calibration_ID = schema.Int(title=u"Calibration_ID",
required=False
)
...
Calibration_Type = schema.Choice(title=u"Calibration Type",
description=u"Type of Calibration",
source=_calibrationTypes,
required=True,
)
...
Last_Calibration = schema.Datetime(title=u"Last Calibration",
required=False,
)
...
以下是ORMBase类的简要示例:
@implementer(ICalibration)
class Calibration(ORMBase)
__tablename__="Calibrations"
Calibration_ID = sqlalchemy.Column(sqlalchemy.Integer(),
primary_key=True,
autoincrement=True
)
Calibration_Type = sqlalchemy.Column(sqlalchemy.Integer(),
nullable=False
)
...
Last_Calibration = sqlalchemy.Column(sqlalchemy.types.DateTime(),
nullable=True,
)
...
以下是表单类的内容:
class EditCalibration(form.SchemaForm):
grok.name('edit-calibration')
grok.require('zope2.View')
grok.context(ISiteRoot)
schema = ICalibration
id = None
@memoize
def getContent(self):
self.id = self.request.get('id',None)
if self.id:
return session.query(Calibration).filter(Calibration.Calibration_ID == self.id).one()
@button.buttonAndHandler(u'Submit')
def handleOk(self, action):
data, errors = self.extractData()
#do something with data
....
@button.buttonAndHandler(u'Cancel')
def handleCancel(self, action):
#redirect user
....
值本身确实在各自的字段中正确显示,但我在调试菜单中收到错误:
TypeError: ('Could not adapt', None, <InterfaceClass gpcl.calibration.calibration.ICalibration>)
如何解决此问题以使其正确适应?
另外,作为参考,我实际上要求question before得到一个答案,提供Calibration和CalibrationForm类的代码。因为字段填写得很好,可能是我做错了。