我想要一个包含来自查询集的值的列表,该列表只出现一次。
我看过this post,但这似乎对我不起作用。
示例:
CharacterJournal.objects.order_by("date").values_list("reftypeid", flat=True).distinct()
返回类似这样的内容:
[97, 96, 97, 97, 97, 97, 97, 97, 42, 42, 42, 52, 42, 42, 1, 42, '...(remaining elements truncated)...']
请帮忙。
答案 0 :(得分:3)
请参阅distinct
[1]文档中的说明:
order_by()调用中使用的任何字段都包含在SQL SELECT列中。当与distinct()一起使用时,这有时会导致意外结果。如果您按相关模型中的字段进行排序,则这些字段将添加到选定的列中,否则可能会使重复的行显示为不同。由于额外的列没有出现在返回的结果中(它们仅用于支持排序),因此有时看起来会返回非独特的结果。
同样,如果使用values()查询来限制所选列,则任何order_by()(或默认模型排序)中使用的列仍将涉及,并可能影响结果的唯一性。
换句话说,因为您按date
排序,所以查询返回(date, reftypeid)
对,并在此对上执行DISTINCT
子句。由于date
,values_list
稍后被删除,但没有额外删除重复的reftypeid
条目。