我有一个带有一些字段的模型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。
谢谢!
答案 0 :(得分:0)
documentation on distinct()
解决了这一点:
如果您使用
values()
查询来限制所选列,则任何order_by()
中使用的列(或默认模型排序)仍将涉及并可能影响结果的唯一性。
如果您使用自己的模型覆盖默认模型排序,它应该有效:
n = M.objects.order_by('a').values_list('a', flat=True).distinct()
(尽管如果a
是相关字段,文档中会有更多警告。)