如何使用Django获取对象名称和对象计数

时间:2017-11-20 15:21:41

标签: python django

我希望在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,))

我上面用过但不起作用 请帮忙

2 个答案:

答案 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}
]

现在,您可以轻松地在模板中循环播放它。