我希望在HTML页面中显示此类内容
位置名称计数
伦敦10
马尼拉8
位置名称位于数据库中。我想显示位置名称以及重复位置名称的次数。
... view.py
class MapListView(ListView):
model = Map
def get_queryset(self):
return Map.objects.annotate(LocName_count=Count('LocName')).order_by('-LocName_count')[:9]
... map_list.HTML
{% for object in object_list %}
<tr>
<td>{{object}}</a></td>
<td><a href="{{object.get_absolute_url}}">{{ object.LocName }}</a></td>
<td><a href="{{object.get_absolute_url}}">{{ object.LocName_count }}</a></td>
</tr>
{% endfor %}
... models.py
class Map(models.Model):
# Fields
LocName = models.TextField(max_length=255)
class Meta:
ordering = ('-pk',)
def __unicode__(self):
return u'%s' % self.pk
def get_absolute_url(self):
return reverse('Home_map_detail', args=(self.pk,))
def get_update_url(self):
return reverse('Home_map_update', args=(self.pk,))
我上面用过但不起作用 请帮忙
答案 0 :(得分:0)
您可以使用count()
来计算数据,但是可以显示您的整个模型代码以确保
答案 1 :(得分:0)
您可以使用 .values()然后使用django ORM的 .annotate()进行GROUP BY查询
Map.objects.values('LocName').annotate(count=Count('LocName'))
输出将是
[
{'LocName': 'London', 'count': 10},
{'LocName': 'Manila', 'count': 8}
]
现在,您可以轻松地在模板中循环播放它。