Django注释聚合问题

时间:2020-07-27 22:12:15

标签: django aggregate annotate

我正在建立一个使用django-tables2和django-filters返回数据表的站点。我已经弄清了所有这些(大部分),并且弄清楚了如何使用查询来填充表。我正在努力成功地聚合查询集中的数据。我想按专业显示平均收入,并且获得多行而不是汇总。这是代码。感谢您提供的任何帮助!奖励点是,如果有人知道为什么某些学位类型值中显示一个正方形,而该正方形未显示在我用来填充数据库的CSV中。谢谢!

models.py

class MajorData(models.Model):
    unitid = models.IntegerField()
    opeid6 = models.IntegerField()
    instname = models.CharField(max_length=255, verbose_name='Name of Institution')
    control = models.CharField(max_length=255,null=True, blank=True)
    main = models.IntegerField(null=True, blank=True)
    cipcode = models.IntegerField(null=True, blank=True)
    cipdesc = models.CharField(max_length=255,null=True, blank=True, verbose_name='Degree Description')
    credlevel = models.IntegerField(null=True, blank=True)
    creddesc = models.CharField(max_length=255,null=True, blank=True, verbose_name='Degree Type')
    count = models.IntegerField(null=True, blank=True)
    debtmedian = models.IntegerField(null=True, blank=True, verbose_name='Median Debt')
    debtpayment10yr = models.IntegerField(null=True, blank=True)
    debtmean = models.IntegerField(null=True, blank=True)
    titleivcount = models.IntegerField(null=True, blank=True)
    earningscount = models.IntegerField(null=True, blank=True)
    mdearnwne = models.IntegerField(null=True, blank=True, verbose_name='Median Earnings')
    ipedscount1 = models.IntegerField(null=True, blank=True)
    ipedscount2 = models.IntegerField(null=True, blank=True)

def __str__(self):
    return self.instname

tables.py

class MajorTable(tables.Table):

class Meta:
    orderable=False

    model = MajorData
    template_name = "django_tables2/bootstrap4.html"
    fields = ("cipdesc","creddesc","mdearnwne")

filters.py

class MajorFilter(django_filters.FilterSet):

class Meta:
    model = MajorData
    fields = {'instname': ['icontains'],
             'cipdesc': ['icontains'],
             'creddesc': ['icontains']
             }

views.py

class ListView(SingleTableMixin, FilterView)

    table_class = MajorTable
    queryset = MajorData.objects.all().annotate(Avg('mdearnwne')).exclude(mdearnwne__isnull=True)

    template_name = 'majordata.html'
    filterset_class = MajorFilter

Picture of table results

0 个答案:

没有答案
相关问题