Попробуйте переопределить форму редактирования, чтобы получить то, что вы хотите, вместо того, чтобы пытаться использовать подписчиков здесь - это может выглядеть так:
from plone.dexterity.browser.edit import DefaultEditForm as BaseForm
class ComparisonEditForm(BaseForm):
def update(self, *args, **kwargs):
existing_value = self.context.mykey
BaseForm.update(self, *args, **kwargs)
updated_value = self.context.mykey
if existing_value != updated_value:
pass # DO SOMETHING HERE
Затем зарегистрируйте переопределение в ZCML или что-то в этом роде. YMMV, я не пробовал это, но я думаю, что общая идея должна работать.