Соедините 2 django наборов запросов по заданному полю и упорядочите - PullRequest
1 голос
/ 14 января 2020

У меня есть следующая модель:

class TimeStamp():
    mydate = models.DateTime()
    value = models.Integer()
    cat = models.CharField()

Таблица данных будет выглядеть примерно так:

mydate   | value  | cat
=======================
1st Jan  | 10     | A
2nd Jan  | 10     | A
3rd Jan  | 10     | A
4th Jan  | 5      | A
1st Jan  | 5      | B
2nd Jan  | 20     | B
3rd Jan  | 15     | B
4th Jan  | 30     | B

выходная таблица будет выглядеть так, поэтому мы соединяемся по соответствующим датам, затем порядок по значению для A, затем по значению для B. Обратите внимание, что в таблице ниже приведены ожидаемые выходные данные, обратите внимание на порядок дат и порядок значений value_A и value_B

mydate   | value_A  | value_B
==============================
4th Jan  | 5        | 30
1st Jan  | 10       | 5
3rd Jan  | 10       | 15
2nd Jan  | 10       | 20

Я могу получить 2 набора запросов:

qs_a = TimeStamp.objects.filter(cat='A')
qs_b = TimeStamp.objects.filter(cat='B')

Я не уверен, как потом соединить эти 2 вместе. Обратите внимание, что | объединит 2 набора, что не то, что мне нужно ... Я хотел бы объединить эти 2 набора запросов, затем упорядочить по A, а затем B, чтобы список дат был в порядке значений, где Cat = A, а затем значений, где Кошка = B

1 Ответ

0 голосов
/ 14 января 2020

Вы можете использовать цепочку itertools для этого.

from itertools import chain
qs_chain = chain(qs_a, qs_b)

Отвечает ли это на ваш вопрос?

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