Django queryset 获取相对于其他列的不同列值

Django queryset get distinct column values with respect to other column

我正在使用 django orm 并且我正在尝试获取列的所有值,但前提是不同的列相对于它是唯一的。很难解释,所以这里有一个例子:

q | a | 1    
w | s | 2  
e | a | 3  
q | a | 4  
w | s | 5  
e | a | 6  

我想获取第 2 列中的所有值,但如果它们在第 1 列中也具有相同的值,则不要重复。所以在这种情况下,我想得到 [a,s,a]。 (第 3 列仅用于说明为什么这些重复项没有首先合并)。

我试过的: 我尝试按第 1 列和第 2 列的值分组并取其不同的值,因此我最终会得到:
问 |一个
瓦 | s ---> 实际上给出为 [(q,a),(w,s),(e,a)]
电子 |一个
使用代码:queryset.values(col1,col2).distinct() 但我只想要第二列,所以我添加了 .values(col2)。问题是 distinct 被应用于第二个 values 和第一个的结果,所以我得到的不是 [a,s,a],而是 [a,s].
我也尝试使用 .defer() 所以 queryset.values(col1,col2).distinct().defer(col1) 但显然你不能在使用 .values().

后使用 .defer()

我在网上找不到这个问题的解决方案,现在暂时无处可去,非常感谢任何帮助!

如果您使用 PostgreSQL 作为数据库,试试这个:

queryset.order_by('col1', 'col2').distinct('col1', 'col2').values('col2')

我还没有机会测试它,但它应该会找到 col1col2 的组合不同的结果,而 return col2 值。