Django 我使用的是distinct()对吗?

Django 我使用的是distinct()对吗?,django,django-models,django-queryset,Django,Django Models,Django Queryset,我正在尝试创建一个简单的应用程序来显示数据库记录列表。所述数据通过csvimport从csv批量加载。我正在加载的csv文件有数千条记录,但是对于这个测试,有一列(市政,它的意思是城市)对所有记录都有相同的值 在我用于测试的索引视图中,我想显示加载的(不同)城市的数量,然后显示所述城市的列表 这是我的观点 def index(request): num_municipios = DireccionEnCobertura.objects.values_list('municipio').

我正在尝试创建一个简单的应用程序来显示数据库记录列表。所述数据通过csvimport从csv批量加载。我正在加载的csv文件有数千条记录,但是对于这个测试,有一列(市政,它的意思是城市)对所有记录都有相同的值

在我用于测试的索引视图中,我想显示加载的(不同)城市的数量,然后显示所述城市的列表

这是我的观点

def index(request):

    num_municipios = DireccionEnCobertura.objects.values_list('municipio').distinct().count()
    municipios = DireccionEnCobertura.objects.values('municipio').distinct()
    return (render (request, 'index.html', context={'num_municipios':num_municipios, 'municipios':municipios}))
这在我的index.html中

<ul>
    <li><strong>Municipios:</strong> {{ num_municipios }}</li>

  </ul>
  <table>
    <thead>
      <td>Municipios Incluidos</td>
    </thead>
    <tbody>
      {% for municipio in municipios.distinct() %}
      <tr>
          <td>{{ municipio.municipio }}</td>
      </tr>
      {% endfor %}
    </tbody>
  </table>
为了清晰起见,“市政”字段就是我称之为“城市”的字段

我上下检查了csv文件,我将值从第一个单元格复制到了列的其余部分,以确保没有隐藏字符使其与somewho不同,但我仍然得到了

城市数量=1

(这是正确的)但是

市政府

显示了成百上千的相同的东西


我做错了什么?

问题是您有一个默认的
顺序。发件人:

如果使用
values()
查询来限制所选列,则任何
order\u by()
中使用的列(或默认模型排序)仍将涉及,并可能影响结果的唯一性

既然你不在乎这方面的订单,就这样吧

如果不希望对查询应用任何排序,甚至不希望对默认排序,请调用
order\u by()
,不带参数

像这样:

municipios = DireccionEnCobertura.objects.order_by().values('municipio').distinct()
municipios = DireccionEnCobertura.objects.order_by().values('municipio').distinct()