在我工作的plone站点上,我有一个表单,用于编辑映射到后端数据库中表的对象的记录。在接口类中,其中一个字段是架构.日期时间字段。在
class ICalibration(Interface):
"""Interface class for calibration records
"""
...
Last_Calibration = schema.Datetime(title=u"Last Calibration"
description=u"date of last calibration",
)
...
在我的updateWidgets函数中,在编辑表单中,我尝试设置小部件的值
^{pr2}$但我得到一个错误:
“类型错误:'日期时间。日期时间“object没有属性'getitem”。在
我确实尝试了一些有趣的东西。
我打印了校准上一次校准它是我添加唱片时输入的日期。
我试着打印校准上一次校准是的,这是python的datetime(与zope的日期时间相反,我相信?)。
我尝试将字段设置为今天的日期:日期时间。今天()得到了同样的错误。
只是为了好玩,我也试着转换当前校准最后一次校准传递给一个字符串并将其传递到字段中,尽管这只是将随机数放入字段中。在
作为记录,我将python的datetime导入为:
from datetime import datetime
另外,添加记录/校准工作正常,因此我使用的数据库或sqlalchemy模式不是问题。在
如果可能,在updateWidgets函数中设置schema字段的值的适当方法是什么?在
我应该使用不同的小工具吗?如果是这样的话,我只需要填写日期。add/update函数将接受一个datetime对象,因此我可以从数据创建一个datetime对象,而不管我相信的类型是什么。在
在z3c.form框架中,以下步骤正好可以获得小部件值:
您的问题是您试图将小部件值设置为datetime,而不是小部件所期望的datetime的序列化。在
我将通过重写getContent而不是updateWidgets来执行您正在尝试的操作:
您还需要声明您的Calibration类实现了ICalibration接口,以便z3c.form识别它可以获得最后一次校准作为校准实例的属性。应该是这样的:
^{pr2}$相关问题 更多 >
编程相关推荐