Набор запросов Django получает различные значения столбца относительно другого столбца

Я использую 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 |
ш | s ---> который фактически задается как [(q,a),(w,s),(e,a)]
е |
с кодом: queryset.values(col1,col2).distinct()но я хочу только второй столбец, поэтому я добавил .values(col2), Проблема в том, что отчетливое отношение применяется к результатам второго values как и первое, поэтому вместо получения [a, s, a] я получаю [a,s].
Я также пытался использовать .defer() так queryset.values(col1,col2).distinct().defer(col1) но, видимо, вы не можете использовать .defer() после использования .values(),

Я не могу найти решение этой проблемы в Интернете, и какое-то время я ни к чему не привожу, любая помощь будет принята с благодарностью!

1 ответ

Решение

Если вы используете PostgreSQL в качестве базы данных, попробуйте это:

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

У меня не было возможности проверить это, но он должен найти результаты, когда комбинация col1 а также col2 различны и возвращают col2 ценности.

Другие вопросы по тегам