为了账号安全,请及时绑定邮箱和手机立即绑定

Django - Excel 计算方法值的总和

Django - Excel 计算方法值的总和

倚天杖 2022-10-25 14:52:55
我创建了一个数据模型,用户上传 excel 文件并计算行和列class Data(models.Model):    """ Model of Data"""    user = models.ForeignKey(User, on_delete=models.CASCADE)    document = models.FileField(upload_to="documents/%Y/%m/%d")    uploaded_at = models.DateTimeField(auto_now_add=True)    def __str__(self):        return str(self.document)    def amount(self):        wb = xlrd.open_workbook(self.document.name)        worksheet = wb.sheet_by_index(0)        row_count = worksheet.nrows        print(row_count)        column_count = worksheet.ncols        print(column_count)        total_col_row = row_count * column_count        # print payments        payments = total_col_row * 9        return payments如果用户输入例如 3 个文件,如何获得总金额?
查看完整描述

1 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

我认为您可以将其添加amount为DecimalField模型,并在创建对象后对其进行计算,然后发送post_save信号。然后添加一个简单地汇总所有金额的静态方法。


     from django.db.models import Sum

     from django.dispatch import receiver


     class Data(models.Model):

                """ Model of Data"""

                user = models.ForeignKey(User, on_delete=models.CASCADE)

                document = models.FileField(upload_to="documents/%Y/%m/%d")

                uploaded_at = models.DateTimeField(auto_now_add=True)

                amount = models.DecimalField(default=0, max_digits=4, decimal_places=2, blank=True, null=True)


                def __str__(self):

                    return str(self.document)


              @property

               def total_amount():

                    return Data.objects.all().aggregate(Sum('amount '))['amount __sum']


                def calculate_amount(self):

                    wb = xlrd.open_workbook("documents/%Y/%m/%d"+self.document.name)

                    ...


  @receiver(post_save, sender=Data)

   def data_amount_post_save(sender, instance, created, **kwargs):

   instance.amount= instance.calculate_amount()

   instance.save()


查看完整回答
反对 回复 2022-10-25
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信