Набор запросов Django получает различные значения столбца относительно другого столбца - PullRequest
0 голосов
/ 20 октября 2018

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

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

1 Ответ

0 голосов
/ 20 октября 2018

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...