我有以下代碼,旨在以編程方式將關係值分配給自定義內容類型。重新啓動時丟失一些z3c關係數據
publications = # some data
catalog = getToolByName(context, 'portal_catalog')
for pub in publications:
if pub['custom_id']:
results = catalog(custom_id=pub['custom_id'])
if len(results) == 1:
obj = results[0].getObject()
measures = []
for m in pub['measure']:
if m in context.objectIds():
m_id = intids.getId(context[m])
relation = RelationValue(m_id)
measures.append(relation)
obj.measures = measures
obj.reindexObject()
notify(ObjectModifiedEvent(obj))
架構自定義內容類型
measures = RelationList(
title=_(u'Measure(s)'),
required=False,
value_type=RelationChoice(title=_(u'Measure'),
source=ObjPathSourceBinder(object_provides='foo.bar.interfaces.measure.IMeasure')),
)
的摘錄當我運行我的腳本一切看起來都不錯。問題是當我的自定義內容模板嘗試調用「pub/from_object/absolute_url」時,該值爲空 - 僅在重新啓動後。有趣的是,我可以在重新啓動後獲得pub/from_object的其他屬性,而不是它的URL。
你如何運行腳本?像「斌/實例運行script.py」?然後你需要提交更改。即使你沒有存儲任何東西,屬性'from_object'就在那裏。 – Mathias
@Mathias它在一個BrowserView中,它應該處理提交,但我嘗試添加transaction.commit()並沒有什麼區別。並澄清,我可以做pub/from_object /標題,它的工作原理,我不能得到pub/from_object/absolute_url。就好像它在重啓時失去了上下文。 – Esoth