Skip to main content
 首页 » 编程设计

python之Django-tables2 列总数

2024年10月17日41tuyile006

我正在尝试使用此 documentation 对列中的所有值求和,但页脚未显示。我是不是漏了什么?

模型.py

class Mokejimai(models.Model): 
    id = models.AutoField(primary_key=True) 
    nr = models.IntegerField(verbose_name='Mok. Nr.') 
    data = models.DateField(verbose_name='Kada sumokėjo') 
    suma = models.FloatField(verbose_name='Sumokėta suma') 
    skola_pagal_agnum = models.FloatField(verbose_name='Skola pagal Agnum') 
    date_entered = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name='Apmokėjimas įvestas') 
    date_modified = models.DateTimeField(auto_now_add=False, auto_now=True, blank=True, null=True) 
    imone = models.ForeignKey(Imones, models.DO_NOTHING, verbose_name='Įmonė') 
    sask = models.ForeignKey(Saskaitos, blank=True, null=True, verbose_name='Sąskaita') 
    user = models.ForeignKey(User, models.DO_NOTHING, default=settings.AUTH_USER_MODEL) 

表格.py

class MokejimaiTable(tables.Table): 
    suma = tables.Column(footer=lambda table: sum(x['suma'] for x in table.data)) 
 
    class Meta: 
        model = Mokejimai 
        attrs = {"class": "paleblue"} 
        fields = ('id', 'imone', 'sask', 'nr', 'suma', 'skola_pagal_agnum', 'data', 'date_entered') 

请您参考如下方法:

您的屏幕截图显示 django-tables2 正确地假定您的表上有页脚(耶!)但似乎没有从 lambda 返回任何内容。你可以尝试用这样的东西替换它,看看发生了什么:

def suma_footer(table): 
    try: 
        s = sum(x['suma'] for x in table.data) 
        print 'total:', s 
    except Exception e: 
        print str(e) 
        raise 
 
    return s 
 
 
class MokejimaiTable(tables.Table): 
    suma = tables.Column(footer=suma_footer) 
 
    class Meta: 
        model = Mokejimai 
        attrs = {"class": "paleblue"} 
        fields = ('id', 'imone', 'sask', 'nr', 'suma', 'skola_pagal_agnum', 'data', 'date_entered') 

如果在计算总和时出现问题,您应该会看到打印出一个异常,如果计算了一个值,您应该会看到打印出“total:”。