Django 我使用的是distinct()对吗?
我正在尝试创建一个简单的应用程序来显示数据库记录列表。所述数据通过csvimport从csv批量加载。我正在加载的csv文件有数千条记录,但是对于这个测试,有一列(市政,它的意思是城市)对所有记录都有相同的值 在我用于测试的索引视图中,我想显示加载的(不同)城市的数量,然后显示所述城市的列表 这是我的观点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').
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()