注文数量と注文金額などを保持する数多くの注文子供が関連付けられている請求書モデルオブジェクトで、さまざまな簡単な計算を実行する必要があります。これは、すべて請求書管理フォーム子オブジェクトの合計計算を実行する最も簡単な方法は何ですか?
請求書(models.py)子注文数量を変更する場合、いくつかの問題が発生し
def save():
#get the total of all associated orders
for order in self.invoice_orders.all():
self.invoice_net_total += order.order_value
super(Invoice, self).save()
と:
コード)インラインとして、私は今で働いていることは、このように、これらのCALCSを行い、フォームを保存する - 私は前の合計をneの代わりに得るw合計、私が再び保存するときにのみ、全体が訂正されます。おそらく、Djangoが親オブジェクトと子オブジェクトを保存する方法が原因でしょうか?
私は(恐ろしいコードの準備)子順序オブジェクトにこの計算を動いていたとおもちゃその他のオプション:
注文(models.py)
def save():
if not self.id:
self.invoice.invoice_net_total += self.order_value
elif self.id:
#grab old instance
old = Order.objects.get(pk=self.id)
#remove that old total
self.invoice.invoice_net_total -= old.order_value
self.invoice.save()
#add new total
self.invoice.invoice_net_value += self.order_value
self.invoice.save()
それはどちらかの非常に効果的ではないのですけれども。
誰かが、私がこれらの計算が確実に実行できるようにするための簡単な方法を教えてくれるのだろうか?シグナルの思考(私には比較的新しい)が、それが過度のものかどうか疑問に思った。私はおそらくこれを思っています!
が
おそらく集計が最適ですが、集計はDjango 1.0では利用できませんが、集計では1.1が「今すぐ」になることに注意してください。 (tm)」 - SVNトランクは今使用するのに十分安定しています:) – mikl
おめでとう集計は素晴らしいです。悲しいことに、私はDjango 1.0.2に悩まされていますが、あなたは私にアイディアをくれました - 私はプロパティ宣言でこれを解決しましたモデルのメソッドでは、フィールドに合計を明示的にコミットする必要はないことがわかりました - 完全に動作します。乾杯。 – user108791