我有一个名为groupname的字段的数据库表。 我有一个查询集,用于计算组名的数量,如下所示
count_groups=Eventgroup.objects.values('groupname').annotate(group_count=Count('groupname'))
我想以下列格式返回此值:
[{
data : [[0, 4]],
label : "Event 2345"
}, {
data : [[0, 3]],
label : "Event 34567"
}, {
data : [[0, 5]],
label : "Event 4567",
}, {
data : [[0, 3]],
label : "Event 4356"
}];
其中label应该是组名的名称,在数据中,0
始终存在,但第二个值是组名的计数。
这是我的模特:
class Eventgroup(models.Model):
event_id=models.CharField(max_length=500)
OS_CHOICE=(('Win 2003','windows 2003'),
('Win 2008','Windows 2008'),
('Win XP','Windows XP'),
('Win VISTA','Win VISTA'),
('Win 2007','Windows 2007'),
)
windows=models.CharField(max_length=20,choices=OS_CHOICE,default='Win 2003')
groupname=models.CharField(max_length=250)
def __unicode__(self):
return " %s, group name:%s" \
% (int(self.event_id), str(self.groupname.name),str(self.windows.name))
class Meta:
db_table= 'Eventgroups'
verbose_name_plural='eventgroups'
请根据我的数据提供见解。问候
答案 0 :(得分:1)
像这样的东西
def format_results(queryset):
for eventgroup in queryset:
yield {
'data': [[0, eventgroup['group_count']]],
'label': eventgroup['name'],
}
count_groups = Eventgroup.objects.values('groupname').annotate(group_count=Count('groupname'))
results = format_results(count_groups)
使用像这样的生成器的行为类似于查询集,因为它不会立即作为列表对象进行评估或完全加载到内存中。