2014-12-17 2 views
1

В моем приложении мне нужна история изменений объектов. Такой подход соответствует его довольно красиво:Селективное управление версиями с SQLAlchemy

http://docs.sqlalchemy.org/en/rel_0_9/orm/examples.html#module-examples.versioned_history

Однако, так как данные, введенные являются довольно сложными, я не хочу это спасло каждый раз с новой версией; это только после проверки данных, редактирования и т. д., что объект должен быть зафиксирован и изменен версией с момента его изменения.

Конечно, я могу создать MyClassScratchpad для каждого MyClass, заставить пользователей заполнить MyClassScratchpad экземпляр, а затем скопировать в MyClass, например, для управления версиями, но это довольно громоздкими.

Можно ли приостановить управление версиями на объекте SQA и затем включить его позже?

ответ

0

Я пересмотрел вопрос, так как он является той же самой строкой, которая получает версию с изменением номеров при использовании versioned_history, и мне нужен контрольный журнал с несколькими строками, чтобы иметь историю измененных значений. versioned_rows.py делает это:

http://docs.sqlalchemy.org/en/rel_0_9/orm/examples.html#module-examples.versioned_rows

необходимая модификация оказалась тривиальной:

class VersionExtension(SessionExtension): 
    def before_flush(self, session, flush_context, instances): 
     for instance in session.dirty: 
      ... 
      if hasattr(instance, '_suspend_versioning') and getattr(instance, '_suspend_versioning') is True: 
       continue 
Смежные вопросы