Python 将django中的两个字段相乘

Python 将django中的两个字段相乘,python,django,django-models,Python,Django,Django Models,我有两种不同的型号 class Part(models.Model): partno = models.CharField(max_length=50) price = models.PositiveIntegerField(default= 0) tax = models.PositiveIntegerField(default= 0) created_date = models.DateField(auto_now_add=True) 我想将价格与采购

我有两种不同的型号

class Part(models.Model):
    partno = models.CharField(max_length=50)   
    price = models.PositiveIntegerField(default= 0)
    tax = models.PositiveIntegerField(default= 0)
    created_date = models.DateField(auto_now_add=True)
我想将
价格
采购订单数量
的部分相乘,结果显示在
金额
中。e、 g

金额=价格*采购订单数量


有人能帮我解决这个问题吗?

既然
金额
完全取决于
价格
采购数量
,你最好使用一个属性。否则会引入数据复制。因此,您可以将其实现为:

class PurchaseOrder(models.Model):
    part = models.ForeignKey(Part, on_delete=models.CASCADE)
    po_quantity = models.PositiveIntegerField(default= 0)
    supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    created_date = models.DateField(auto_now_add=True)

    @property
    def amount(self):
        return self.po_quantity * self.part.price

由于
金额
完全取决于
价格
采购订单数量
,因此最好为此使用属性。否则会引入数据复制。
class PurchaseOrder(models.Model):
    part = models.ForeignKey(Part, on_delete=models.CASCADE)
    po_quantity = models.PositiveIntegerField(default= 0)
    supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    created_date = models.DateField(auto_now_add=True)

    @property
    def amount(self):
        return self.po_quantity * self.part.price
from django.db.models import F

class PurchaseOrderManager(models.Manager):
    
    def get_queryset(self, *args, **kwargs):
        return super().get_queryset(*args, **kwargs).annotate(
            amount=F('po_quantity') * F('part__price')
        )


class PurchaseOrder(models.Model):
    part = models.ForeignKey(Part, on_delete=models.CASCADE)
    po_quantity = models.PositiveIntegerField(default= 0)
    supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    created_date = models.DateField(auto_now_add=True)

    objects = PurchaseOrderManager()