Ron*_*Ron 57 database django django-models
我试着得到一个不同的外键列表,我写了这个:
my_ids = Entity.objects.values('foreign_key').distinct()
Run Code Online (Sandbox Code Playgroud)
但我只得到一份UNDISTINCT外键列表......我错过了什么?
谢谢!
Ron*_*Ron 48
多数民众赞成!两种解决方案都不会100%工作......但我将它们结合起来:)
将参数传递给不同的MySQL数据库(afaik)
这个工作并返回一个对象:
Entity.objects.order_by('foreign_key').values('foreign_key').distinct()
但无论如何,谢谢:)
Fil*_*vić 41
也许你可能想要这样:
Entity.objects.order_by().values_list('foreign_key', flat=True).distinct()
Run Code Online (Sandbox Code Playgroud)
Sar*_* Ak 25
Entity.objects.values_list('foreign_key', flat=True).distinct().order_by()
Run Code Online (Sandbox Code Playgroud)
明显无法按顺序运行
order_by()调用中使用的任何字段都包含在SQL SELECT列中.当与distinct()一起使用时,这有时会导致意外结果.如果您按相关模型中的字段进行排序,则这些字段将添加到选定的列中,否则可能会使重复的行显示为不同.由于额外的列不会出现在返回的结果中(它们仅用于支持排序),因此有时看起来会返回非独特的结果.
同样,如果使用values()查询来限制所选列,则仍将涉及任何order_by()(或默认模型排序)中使用的列,这可能会影响结果的唯一性.
这里的道德是,如果你使用distinct(),请注意相关模型的排序.类似地,当同时使用distinct()和values()时,在按值()调用的字段排序时要小心.
https://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct
Entity.objects.order_by('foreign_key').distinct('foreign_key')
Run Code Online (Sandbox Code Playgroud)
如果您已经将它们作为列表,则将其转换为set()以获得不同的值。