Django Group By - PullRequest
       3

Django Group By

1 голос
/ 02 октября 2010

Я пишу простой частный мессенджер, использующий Django, и реализую поток сообщений.

Каждая серия сообщений и ответов будет иметь уникальный thread_id, который позволит мне связывать воедино наборы сообщений. Однако в представлении входящих сообщений ВСЕ сообщения отображаются, я просто хотел бы сгруппировать их по thread_id, чтобы хотя поток мог иметь 20 сообщений, он появляется только один раз во входящих.

Это было бы довольно просто

SELECT msg_id, msg_text, subject, from_user_id, to_user_id, date_time, is_read,
thread_id WHERE to_user_id='foo' GROUP BY thread_id FROM inbox_message;

однако, я не могу выполнить его, используя ORM Джанго

есть мысли?

1 Ответ

1 голос
/ 02 октября 2010

Чего вы хотите достичь с помощью этого оператора SQL?

Это будет работать на некоторых СУБД (например, MySQL), но это не разрешено законом. Когда вы используете оператор GROUP BY, вы можете выбрать только столбцы, по которым вы группируете, и агрегаты (SUM, AVG, COUNT и т. Д.). Другие столбцы запрещены, поскольку СУБД не знает, какие данные возвращаются (т. Е. Должны ли они возвращать тему первого сообщения, второго или чего?).

Если вы не хотите суммировать информацию о потоке, кроме количества сообщений, вероятно, лучшее решение для вас - добавить новые столбцы в таблицу thread (кстати. У вас есть thread таблица?).

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