1

models.py で

class PurchaseOrder(models.Model):
    product = models.ManyToManyField('Product', null =True)
    total_price= models.FloatField()

    def get_total_price(self):
        return sum([p.price_for_each_item for p in self.product.all()]) #this just returns a float such as 42323

admin.py で:

search_fields = ['total_price']動作します。しかし、get_total_price を検索できません。では、検索で定義を取得できるようにするにはどうすればよいでしょうか。または、オブジェクト total_price が get_total_price の収益の値を取得して保存するようにするにはどうすればよいですか?

4

2 に答える 2

0

メソッドをオーバーライドし、save()追加および更新時に total_price を挿入する必要があります。より簡単で、パフォーマンスが向上します。

未検証:

class PurchaseOrder(models.Model):
    product = models.ManyToManyField('Product', null =True)
    total_price= models.FloatField()

    def save(self, *args, **kwargs):
        self.total_price = sum([p.price_for_each_item for p in self.product.all()])
        super(PurchaseOrder, self).save(*args, **kwargs)
于 2013-08-08T18:43:20.547 に答える