亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號