2009-10-21 72 views
1

我有一個類:如何把在交易

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(配對交易對是自我循環參考)
  • 更新兩個賬戶中每個賬戶的餘額 - 主賬戶&配對交易賬戶

交易的父母可能是他們的賬戶,但似乎不可能將這些實體組成一個實體組。

用RDBMS來描述,這意味着我希望一個表有兩個外鍵(一個實體 - 兩個父母)。該怎麼辦?

起初,我試圖不管理的餘額,但它似乎慢,每次來計算的話......

怎麼辦?

回答

1

由於您的賬戶實體不能全部位於同一個實體組中,因此無法在單個交易中執行更新。有技術可以做到這一點,特別是在您遇到的「轉賬」情況下 - 事實上,我寫了關於這個確切主題的a blog post

+0

是的,那正是我需要的。非常感謝你! – manda 2009-10-22 11:46:13