Набор запросов 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
ценности.