1

ManyToManyField の合計金額を取得しようとしています。price_for_each_item で個々の価格を取得しています。次に、その中に含まれていたアイテムの合計を「total_price」に追加したい

class PurchaseOrder(models.Model):
    number_of_products = models.ManyToManyField('Product', null =True)
    total_price = models.FloatField(verbose_name='Total Price')

class Product(models.Model):
    products = models.CharField(max_length=256, null =True)
    price_for_each_item = models.FloatField(verbose_name = "Price")

    def __unicode__(self):
        return self.products

たとえば、Macbook Pro = 500 ドル、Asus コンピューター = 200 ドル、マウスパッド = 50 ドルを注文したとします。その合計を total_price = $750 にしたいと思います

編集:これをやってみましたが、役に立ちませんでした。これを機能させるために私が何をしなければならないか知っている人はいますか? 表示しようとすると、呼び出せる float オブジェクトがないと表示されます

    def get_total_price(self):
       return ([p.price_for_each_item for p in self.total_price()])
4

2 に答える 2

1

dollar_amountフィールドを追加する必要はありません。つまり、情報が重複しています。代わりにそれをプロパティにすると、これが合計価格を取得する方法です。

from django.db.models import Sum

p = PurchaseOrder.objects.filter(...)
p.annotate(Sum("products__price_for_each_item")
于 2013-08-08T13:47:18.400 に答える