Django Model方法变量放入模板

时间:2020-05-11 20:41:22

标签: python django xlrd

我有一个模型,我想获取方法变量“行计数和列” 计数,以将值放入模板中。

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=6, decimal_places=2,
                                 blank=True, null=True)

    def calculate_amount(self):
        # wb = xlrd.open_workbook('media/' + self.document.name)
        wb = xlrd.open_workbook(os.path.join(settings.MEDIA_ROOT,
                                             self.document.name))
        worksheet = wb.sheet_by_index(0)

        # Show this value into templates
        row_count = worksheet.nrows
        column_count = worksheet.ncols


1 个答案:

答案 0 :(得分:1)

您可以使用类似以下代码段的内容,您的模型现在将具有两个新属性row_countcolumns_count,可以在模板中调用它们,每个属性都将调用{{1} }以获取其值。

如果我在calculate_amount上添加了if,则可以防止对其进行多次调用,以避免多次读取文件,并可能减慢您的应用程序的速度。

calculate_amount

已用property setters更新。