【问题标题】:Making a query in django and return sum of all my objects在 django 中进行查询并返回我所有对象的总和
【发布时间】:2020-06-25 13:15:09
【问题描述】:

我有这个模型

class Invoice(models.Model):
    field1= models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=10)
    amount_field2= models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=10)    
    price_field2= models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=10) 

我可以有几张发票,所以我想对所有发票进行类似 (amount_field2*price_field2) 和 SUM 的操作,以便最终获得总计。在我看来,我需要这样做,因为我不想将总数返回到我的模板。

【问题讨论】:

    标签: django django-views django-queryset


    【解决方案1】:

    已经找到解决方案:

    query = Invoice.objects.aggregate(total= Sum(F('amout_field2') * F('price_field2')),) 
    

    【讨论】:

      【解决方案2】:
      class Invoice(models.Model):
          field1= models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=10)
          amount_field2= models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=10)    
          price_field2= models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=10)
      
          def single_invoice_total(self):
              return self.amount_field2 * self.price_field2
          def get_total_of_all_invoices(self):
              total = 0
              for single_invoice in self.Invoice.all():
                  total += single_invoice.single_invoice_total()
              return total
      

      您可以通过发送视图上下文在模板中显示它 您可以通过
      {{ Invoice.get_total_of_all_invoices }}

      访问总数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-23
        • 2022-10-07
        • 1970-01-01
        相关资源
        最近更新 更多