我有以下结构:
/Plone/folder/year/month/day/id
我想使用invokeFactory在工具中按顺序创建最后一个id
。我希望:
/Plone/folder/2011/06/21/1
/Plone/folder/2011/06/21/2
/Plone/folder/2011/06/21/3
/Plone/folder/2011/06/21/4
而不是:
/Plone/folder/2011/06/21/id-1
/Plone/folder/2011/06/21/id-2
/Plone/folder/2011/06/21/id-3
/Plone/folder/2011/06/21/id-4
...当我尝试在文件夹中创建一个具有相同名称的对象时会自动完成,Plone会为我添加一个序列号。我想要一种有效的方法来创建对象,但只使用序列号而不是带序号的名称。我可以这样做,在文件夹中获取总数os项,但想知道是否有更好的方法。
现实生活中的例子:http://plone.org/products/collective.captcha/issues/4
答案 0 :(得分:2)
如果您手动创建这些对象,可以执行以下操作:
brains = context.getFolderContents({'sort_on' : 'id', 'sort_order' : "reverse"})
if len(brains) > 0:
id = str(int(brains[0].id) + 1)
else:
id = '1'
然后,您必须使用该ID手动创建对象。
如果您希望在用户创建内容时自动完成此操作,您可能需要考虑创建内容规则以更改内容的ID。可能有用的示例是collective.contentrules.yearmonth