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

时间:2018-10-20 11:35:46

标签: python django django-queryset django-orm

我正在使用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列的值进行分组,并采用它的不同值,因此最终结果是:
q |一个
w | s --->实际上为[[q,a),(w,s),(e,a)]
e |一个
代码为queryset.values(col1,col2).distinct() 但是我只想要第二列,因此我添加了.values(col2)。这样做的问题是,第二个values和第一个.defer()的结果都不同,所以我得到的不是[a,s,a],而是[a,s]。
我也尝试过使用queryset.values(col1,col2).distinct().defer(col1),所以.defer(),但是显然您在使用.values()之后不能使用$xmlTest = new SimpleXMLElement('<xmlns:ws:Test></xmlns:ws:Test>', LIBXML_NOERROR, false, 'ws', true); $xmlTest->addAttribute('xmlns:xmlns:ws', 'http://url.to.namespace'); $xmlTest->addAttribute('xmlns:xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');

我在网上找不到解决方案,现在已经一无所获,我们将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果您使用PostgreSQL作为数据库,请尝试以下操作:

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

我还没有机会进行测试,但是它应该找到col1col2组合不同的结果,并返回col2值。