2015-11-09 81 views
0

我正在開發一個項目,用戶可以在其中向賬戶添加現金。因此,我有兩個模型,UserProfile,它具有用戶的基本信息(包括他們的賬戶餘額)以及Transaction,以允許他們添加現金。有什麼方法可以更新(UserProfile)當trasnaction submited平衡領域?使用Django中的保存功能覆蓋不同模型中的值

這裏是我的models.py是什麼樣子:

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    balance = models.DecimalField(max_digits=15, decimal_places=2, default=0) 

class Transaction(models.Model): 
    user = models.ForeignKey(UserProfile) 
    amount = models.DecimalField(max_digits=15, decimal_places=2, default=0) 

    def save(self, *args, **kwargs): 
     self.user.balance = self.amount 
     super(Transaction, self).save(*args, **kwargs) 

所以基本上我想更新在用戶配置的平衡場是在交易模型量輸入的值。任何人都知道我是如何完成這個的?由於

回答

3

你的榜樣看起來不錯,除了一個問題:你缺少的用戶配置文件的save()

class Transaction(models.Model): 
    user = models.ForeignKey(UserProfile) 
    amount = models.DecimalField(max_digits=15, decimal_places=2, default=0) 

    def save(self, *args, **kwargs): 
     self.user.balance = self.amount 
     super(Transaction, self).save(*args, **kwargs) 
     self.user.save()