Джанго сложный запрос - PullRequest
1 голос
/ 26 июня 2011

У меня есть эта модель UserLink, которая в основном описывает силу отношений между пользователями.Вес UserLink становится больше и увеличивается, когда участвующие пользователи взаимодействуют в некоторых действиях.

class UserLink(models.Model):

from_user = models.ForeignKey(User, related_name='following_set')
to_user = models.ForeignKey(User, related_name='follower_set')
date_added = models.DateTimeField(auto_now=True)
weight = models.FloatField(default=1.0, blank=True, null=True)
active = models.BooleanField(default=True)

Существует функция для расчета веса для каждой пары пользователей.Проблема в том, что я не знаю, как создать запрос, который бы возвращал набор запросов пользователям с самым высоким весом пользовательской ссылки для выбранного пользователя, то есть для пользователя «Пол» получить своих «лучших друзей» на основе весаUserLink между Полом и всеми остальными в порядке убывания.

Ответы [ 2 ]

2 голосов
/ 26 июня 2011
UserLink.objects.filter(from_user=paul).order_by('-weight')

И получить свойство to_user из набора запросов. Если вы хотите сократить количество пользователей, используйте [:5]. Если вы хотите ограничить запрос ссылками с весом, превышающим определенное значение, используйте .filter(from_user=paul, weight__gte=value).

Надеюсь, это довольно просто и не требует дальнейшего объяснения.

1 голос
/ 26 июня 2011

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

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