Задать вопрос

Как в PonyORM сделать отложенную запись в БД?

Очередной привет)
Решил поиграться с PonyORM. Оказалась очень классная штука.
Но не могу решить одну проблему. Как сделать отложную запись в базу данных?

Например:
Есть у меня поставщик, я открываю окно с поставщиком меняю ему реквизиты, и после этого решаю сохранить данные или нет. Но Pony не позволяет изменять класс поставщика без @db_session, а если поставить @db_session то он сразу все комитит. В таком случае я не могу отменить изменения.
Сделал небольшой примерчик.
from my_class.orm_class import Vendor
from pony.orm import *

class VendorWindow():
    @db_session
    def __init__(self, order_id):
        self.vendor = Vendor[order_id]

    def ui_new_name(self, name):  # Изменение имени поставщика
        self.vendor.name = name

    def ui_new_phone(self, number):  # Изменение номера поставщика
        self.vendor.phone = number

    def ui_accept(self):  # Принять изменеия
        pass  # тут надо закомитить изменения

    def ui_cancel(self):  # Не применяит изменеия
        pass  # тут надо просто закрыть окно без изменений в БД


class Vendor(db.Entity):
    id = PrimaryKey(int, auto=True)
    name = Required(str)
    full_name = Optional(str)
    mail = Optional(str)
    phone = Optional(str)
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Meller008 Автор вопроса
Списался с Александром (создатель Pony). Он дал мне ответ что использовать Pony класс как промежуточный нельзя!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы