我尝试计算材料模型的总计 这些总数存储在不同的表中,如Inventory,PO,SO
出于这个原因,我决定在Material model manager
中进行聚合class MaterialInventoryManager(models.Manager):
def total_active_inventory(self):
return self.get_queryset().annotate(total_inventory=Sum('inventory__quantity')).filter(is_active = True)
class Material(models.Model):
version = IntegerVersionField( )
code = models.CharField(max_length=30)
name = models.CharField(max_length=30)
description = models.TextField(null=True, blank=True)
materialuom = models.CharField(max_length=1,
choices=UOM_CHOICES)
creation_time = models.DateTimeField(auto_now_add=True, blank=True)
total_inventory = MaterialInventoryManager()
objects = MaterialInventoryManager()
@with_author
class Inventory(models.Model):
material = models.OneToOneField('item.Material',null=True, blank=True)
# material_UOM = models.OneToOneField('item.UOM_BINUOM',null=True, blank=True)
warehouse_Bin = models.ForeignKey(WarehouseBin)
is_active = models.BooleanField(default=True)
quantity = models.DecimalField(max_digits=8, decimal_places=5)
creation_time = models.DateTimeField(auto_now_add=True, blank=True)
答案 0 :(得分:1)
试试这个
return self.get_queryset()
.filter(is_active = True)
.aggregate(total_inventory=Sum('inventory__quantity'))
.get('total_inventory')