ユーザーの残高を更新したい。現在これを行うには、Accountオブジェクトを保存する必要があります。次のビューを検討してください。
def refresh_balance(request):
"""
Balance Refresh.
The balance shown on every page is a cached balance for performance reasons.
To get the real balance you need to re-save the account object which will refresh
the cached value in the database.
"""
page = request.GET['redirect']
account = Account.objects.get(user=request.user)
account.save()
message_user(
request.user,
"Account Balance Refreshed.")
return HttpResponseRedirect(page)
model.py には、脚の作業を行う次のクラス メソッドがあります。
def save(self, *args, **kwargs):
self.balance = self._balance()
return super(Account, self).save(*args, **kwargs)
def _balance(self):
aggregates = self.transactions.aggregate(sum=Sum('amount'))
sum = aggregates['sum']
return D('0.00') if sum is None else sum
これは私には面倒に見えます。再保存するために再保存しています(それが理にかなっている場合)。理想的には、必要なときにいつでもビュー内で refresh() を呼び出すだけです。私は Django の専門家ではないので、これをより適切に処理する方法についてアドバイスが必要です。
私はおそらく静的メソッドを見てきましたか?
def _balance(self):
aggregates = self.transactions.aggregate(sum=Sum('amount'))
sum = aggregates['sum']
return D('0.00') if sum is None else sum
@staticmethod
def update_balance(model):
model.balance = unsure here as I need 'self'?
Account.update_balance(Account)
次に、 ?????を呼び出すだけです。
何かアドバイス?PSこれは未解決の質問ではありません。私が何をしようとしているのか、何を求めているのかは明らかです。ありがとう :)