Найти - Пользователи
Полная версия: Выборка сообщений
Начало » Django » Выборка сообщений
1
niro
Есть две модели
class Posts(models.Model):
user = models.ForeignKey(User)
text = models.TextField()
date = models.DateTimeField(auto_now_add = True)
class Subscribe(models.Model):
user = models.ForeignKey(User, related_name = 'some1')
who = models.ForeignKey(User, blank=True, related_name = 'some2')
В первой сообщения, во второй читатели этих сообщений.
Вот выборка для пользователя, читающиего сообщения других пользователей:
# @name - имя пользователя которого читает request.user
ur = get_object_or_404(User, username = name)
subscribe = Subscribe.objects.filter(who = ur)
@subscribe - список объектов - пользователей, которых читате request.user

Нужно следать своеобразную выборку последних сообщений из таблицы Post других пользователей и передать это для object_list. Как это правильно реализовать ?
niro
Спасибо, lorien!
Судя по всему, ключевое здесь pk__in
Александр Кошелев
Тут кстати не очень оптимально получается.

- Зачем тащить весь объект, когда нужен только первичный ключ?
- Почему бы не сделать вообще вcё в один запрос с подзапросом?
posts = Post.objects.filter(user__in=Subscribe.objects.filter(who__username=name).values("user").query)\
.order_by('-date')[:10]
Александр Кошелев
Да это вроде даже не оптимизация, а просто good practice.
niro
А как модифицировать пример, чтобы получить список пользователей в порядке зависимости от количества подписчиков ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB