2009-10-21 59 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