我有一个带有一些字段的模型M,其中三个字段定义了排序。让我们称它们为a,b,c。所以我有一个排序=["a","b","c"]。
我的问题是:
n = M.objects.values_list ('a', flat=True).distinct()
n.count() --> 217
len(n) --> 26580
这怎么可能?
我使用Python 2.7、Django 1.6和MySQL。
谢谢!
distinct()
的文档解决了这一点:
如果使用
values()
查询来限制所选列,则任何order_by()
(或默认模型排序)中使用的列仍将被涉及,并可能影响结果的唯一性。
如果你用自己的订单覆盖默认型号,它应该可以工作:
n = M.objects.order_by('a').values_list('a', flat=True).distinct()
(尽管如果a
是相关字段,文档中还有更多的注意事项。)