Django: сортировать данные таблицы в соответствии с другими данными таблицы - PullRequest
2 голосов
/ 06 августа 2010

Я прочитал (отличную) документацию, но не могу понять, как сделать это.

У меня есть таблица, которая представляет дружбу пользователей под названием «Shortlist» (с полями «from_user» и «to_user»: оба внешних ключа классическая таблица auth_user. А именно, from_user дружит с_пользователем).

У меня есть другая таблица, в которую я записываю события / действия пользователя (UserLog). В этой таблице есть много полей, включая метку времени и Конечно, пользовательское поле (внешний ключ к auth_user таблица)

как я могу получить данные из таблицы "Shortlist" для конкретного пользователя (from_user) упорядочен по метке времени в таблице UserLog? Или как я могу получить данные Shortlist для определенного пользователя from_user, упорядоченного по итогу количество действий "to_user" зарегистрировано?

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


спасибо за ваш ответ, однако я думаю, что мне может понадобиться дополнительная помощь. То, что я хочу сделать, это упорядочить пользователей в соответствии с их активностью (сначала наиболее активный пользователь). Действия заносятся в другую таблицу.

например, я хочу сделать что-то подобное (если возможно)

select * from Users U, (выберите count (id) из UserLog L, где U.id = L.user_id) в качестве порядка действий по действиям desc

Я также хотел бы отсортировать их в соответствии с их последними действиями (сначала пользователь выполняет самое последнее действие)

какие-либо идеи (или лучшие практики) о том, как делать эти вещи?

1 Ответ

4 голосов
/ 06 августа 2010

Упорядочение по другой таблице возможно с синтаксисом соответствующего поля:

Пример:

UserProfile.objects.all().order_by('user__username')

Для расчета по полям используйте аннотации

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