используя order_by () отдельно от запроса - PullRequest
0 голосов
/ 20 января 2019

Я получаю некоторые сообщения, используя order_by в моем цикле for, как указано ниже

logged_user = Profile.objects.get(user=request.user.id)
followings = logged_user.follows.all()
all_posts = []
for foll in followings:
        all_posts += Posts.objects.all().filter(user_profile=foll.id).order_by('trending_ratio')

Он сортирует сообщения для каждого пользователя, но я хочу отсортировать все сообщения на основе их trending ratio.например, приведенный выше код сортирует все сообщения пользователя user1 по их tending_ratio, затем сортирует сообщения пользователя user2 по trending_ratio и т. д.

Но я просто хочу выполнить сортировку после всех сообщений извсе пользователи хранятся в all_posts, т.е. all_posts.order_by('trending_ratio') после выполнения цикла for for

Примечание: 1. Я следую за полем ManyToMany в модели Posts.2. followings - список всех пользователей, за которыми вошел зарегистрированный пользователь models.py

class Posts(models.Model):
    user_profile = models.ForeignKey(Profile, on_delete=models.CASCADE)
    trending_ratio = models.FloatField(default=1)
    ...

1 Ответ

0 голосов
/ 20 января 2019

Вы можете получить все сообщения в одном запросе:

all_posts = Posts.objects.filter(user_profile__in=followings).order_by('trending_ratio')

Это упорядочит их правильно, а также будет намного эффективнее.

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