Как мне сделать "модельный" расчет в Plone или Zope
Это действительно базовый вопрос о дизайне, но я не могу найти ответ. Я буду использовать очень простой пример, но меня интересуют случаи, когда вычисления на уровне модели, в данном примере "2+2", становятся сложными.
Допустим, я разрабатываю приложение для запуска в Zope или Plone; его работа состоит в том, чтобы добавить два числа. Ловкость позволяет мне легко создавать тип контента с полями addend1 и addend2, и будет генерировать формы добавления, редактирования, отображения для меня. Я мог бы изменить форму отображения, чтобы также отображать поле с именем "сумма", но "сумма" является результатом обширных вычислений в моей модели, и я не хочу представлять его в формах "добавить" или "редактировать", потому что Мне не нужно это как входные данные, просто в результате расчета. Я не хочу вычислять его в моем представлении, потому что это дорого, я хотел бы использовать его повторно после первоначального вычисления, и я не хочу, чтобы моему "представлению" понадобились какие-либо знания о том, как я делаю свои вычисления.
Итак, каков правильный подход "zca" для выполнения модельной работы, который не имеет ничего общего с представлением результатов? Должен ли я создать интерфейс, такой как ISum, и создать адаптер, который преобразует мой тип контента в один, включая сумму, а затем выполнить просмотр интерфейса ISum? Если не то, что? Поиск PP4D и Руководства для разработчиков Zope 3 не помог.
Заранее спасибо за любые идеи.
1 ответ
Использовать события; вы можете зарегистрировать обработчики событий, когда ваш тип контента добавляется или редактируется, и вы устанавливаете значение для объекта всякий раз, когда эти события вызывают ваш обработчик.