为了在Plone和Postgresql之间建立链接,我自然地转向了Plone对象的uuid属性。因此,Plone中的每个uuid都可以作为Postgresql中的外键使用,Postgresql原生支持uuid。
这在过去6个月对我很有帮助,直到我开始使用Plone 4.1.4。随着plone.uuid 1.0.2的引入,这种方法发生了变化,它将uuids的字符串表示从带破折号的uuids更改为没有破折号的uuids。
这个变化的问题在于,我无法确定任何给定对象将使用哪种表示形式。在Plone 4.1.4之前创建的对象包含不同格式的uuid字符串,而在之后创建的对象则没有。
长话短说,为了确保我的代码适用于任何uuid表示形式,我希望能够使用Python的uuid类型进行搜索。
所以,代替这个:
catalog.searchResults(UID='325dc47e-08f9-4fa1-bc18-3944a725adb4')
这段话的翻译如下:
这会返回不同的结果:
catalog.searchResults(UID='325dc47e08f94fa1bc183944a725adb4')
我很乐意做这件事:
from uuid import UUID
catalog.searchResults(UID=UUID('325dc47e-08f9-4fa1-bc18-3944a725adb4'))
这将等同于这个:
catalog.searchResults(UID=UUID('325dc47e08f94fa1bc183944a725adb4'))
有人知道我如何在Plone中实现与uuid表示无关的独立性吗?
uuid.UUID
?(令人惊讶的是,每次小更新Plone都会产生如此多的故障...) - Ulrich Schwarz