0

首先:我正在运行具有敏捷内容类型 2.0.7 的 Plonce Plone 4.3 (4305) 实例

我的方法是编写一个 Python 脚本(通过 ZMI 添加),它使用以下方法invokeFactory(...)typestool.constructContent(..)此处描述的方法创建我的敏捷内容类型:http: //plone.org/documentation/kb/add-content-programmatically(我已经编写了两个脚本它们执行相同的任务但使用不同的方法 - 用于学习目的)

一切正常,除非我尝试将 DateTime 对象添加到上述两种方法的构造函数以创建我的内容类型。日期字段奇怪地只更新日期和年份值。由于在 python 中导入库的限制,我被这个代码卡住了(以我目前的知识):

d = DateTime('12/12/2013')

我的脚本在完成后返回日期对象,如下所示:

2013/12/12 00:00:00 GMT+1

我编写了另一个小脚本,它在构造后输出 Date 值,它给了我相同的结果(这似乎是正确的)。生成的内容类型的日期和年份字段已正确更新,但月份值保持在一月份,并在查看时引发以下 TypeError:

TypeError: int() argument must be a string or a number, not 'instancemethod'

我可以通过手动编辑月份值来解决这个问题,这并不是我想要的。我猜这是我的 DateTime 对象的一个​​小问题,但此时我已经没有想法了(整个文档似乎有点分散)。我在 DateTime 构造函数中尝试了各种日期格式,但没有运气。

我也不确定如何修改我的对象自定义字段值。Plone 似乎只提供setTitle()setDescription()方法。也许有人有一个很好的提示。

提前谢谢大家,问候

4

2 回答 2

0

不确定 dateTime 问题,但请查看索引、索引和自定义索引以找出设置标题和描述。

例如设置你的标题

@indexer(IFormName)
def titleIndexer(obj):
    return obj.valueFromForm
grok.global_adapter(titleIndexer, name="Title")
于 2013-07-23T21:24:14.410 回答
0

AFAIK,问题在于灵巧类型的 DateTime 字段需要一个 datetime 对象,而不是 DateTime 对象。

在 invokeFactory 中,您应该传递一个 datetime 对象而不是 DateTime 对象

>>>date=datetime.datetime(2011,1,1)
>>>myobj=target.invokeFactory(type_name="content_type_name", id=id, date=date)

>>from DateTime import DateTime
>>DateTime().month() 
7
>>from datetime import datetime
>>datetime.now().month
7
>>datetime.now().month()
TypeError: 'int' object is not callable 

>>> myobj.date
datetime.datetime(2013, 7, 26, 0, 0) 
>>> myobj.date.month 
7
>>> myobj.date.month() 
TypeError: 'int' object is not callable 
于 2013-07-29T12:20:38.453 回答