我尝试获取不同外键的列表,并编写了以下代码:
my_ids = Entity.objects.values('foreign_key').distinct()但我只拿到了一份UNDISTINCT外键的列表...我遗漏了什么?
谢谢!
发布于 2012-06-01 19:15:29
将参数传递给distinct不适用于MySQL数据库(AFAIK)
这个函数只工作并返回一个对象:
Entity.objects.order_by('foreign_key').values('foreign_key').distinct()
发布于 2012-06-01 18:58:04
也许你可能想要这样做:
Entity.objects.order_by().values_list('foreign_key', flat=True).distinct()发布于 2016-05-04 19:50:30
Entity.objects.values_list('foreign_key', flat=True).distinct().order_by()distinct不适用于out order by
order_by()调用中使用的任何字段都包含在SQL SELECT列中。当与distinct()一起使用时,这有时可能会导致意外的结果。如果您按相关模型中的字段排序,这些字段将被添加到选定的列中,并且它们可能会使原本重复的行看起来不同。由于额外的列不会出现在返回的结果中(它们只是为了支持排序),所以有时看起来返回的是不明确的结果。
类似地,如果使用values()查询来限制选定的列,则任何order_by() (或默认模型排序)中使用的列仍将涉及,并可能影响结果的唯一性。
这里的教训是,如果您使用distinct(),请注意按相关模型排序。同样,当同时使用distinct()和values()时,在按字段排序时要小心,因为字段不在values()调用中。
https://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct
https://stackoverflow.com/questions/10848809
复制相似问题