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')
我还没有机会测试它,但它应该会找到 col1
和 col2
的组合不同的结果,而 return col2
值。
我正在使用 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')
我还没有机会测试它,但它应该会找到 col1
和 col2
的组合不同的结果,而 return col2
值。