как оформить сделку - PullRequest
       6

как оформить сделку

1 голос
/ 22 октября 2009

У меня есть класс:

class AccountTransaction(db.Model):
    account = db.ReferenceProperty(reference_class=Account)
    tran_date = db.DateProperty()
    debit_credit = db.IntegerProperty() ## -1, 1
    amount = db.FloatProperty()
    comment = db.StringProperty()
    pair = db.SelfReferenceProperty()

Итак, я хочу создать метод Save (), который будет выполнять следующие шаги в транзакции:

  • чтобы сохранить AccountTransaction
  • для сохранения парной транзакции AccountTransaction (пара парных транзакций является циклической ссылкой)
  • для обновления сальдо каждой из двух учетных записей - основной учетной записи и учетной записи парной транзакции

Возможно, что родителями транзакций будут их Учетные записи, но, тем не менее, кажется невозможным создать группу сущностей из этих сущностей.

Описанный в терминах СУБД, это означает, что я хочу, чтобы одна таблица имела два внешних ключа (один объект - два родителя). Что делать?

Сначала я пытался не управлять балансами, но, кажется, он медленно вычисляется каждый раз ...

Что делать?

1 Ответ

1 голос
/ 22 октября 2009

Поскольку все ваши учетные записи не могут находиться в одной группе объектов, вы не можете выполнить обновление в одной транзакции. Есть методы для этого, особенно в случае с «денежным переводом», с которым вы столкнулись - на самом деле я написал сообщение в блоге именно об этой теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...