Сортировка селектора запросов

Inbox = Messages.objects.filter(Q(sender=request.user) | Q(receiver=request.user))
context['Inbox'] = Inbox

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

Я хочу сортировать их по времени и статусу прочтения. Так, чтобы последнее непрочитанное сообщение отображалось первым.

models.py

class Messages(models.Model):
    sender = models.ForeignKey(Profile,related_name='sender',on_delete=models.CASCADE)
    receiver = models.ForeignKey(Profile,related_name='receiver',on_delete=models.CASCADE)
    subject = models.CharField(default='',max_length=100)
    text = models.CharField(default='',max_length=4096)
    time = models.DateTimeField(auto_now_add=True)
    read = models.BooleanField(default=False)

    def __str__(self):
        return '{} to {} :{}'.format(self.sender,self.receiver,self.text)

Этого можно достичь с помощью Model.objects.order_by(). В вашем случае это будет выглядеть следующим образом:

Inbox = Messages.objects.filter(Q(sender=request.user) | Q(receiver=request.user)).order_by("-time", "read")

Или "-read", в зависимости от того, хотите ли вы, чтобы они были отсортированы по возрастанию/по убыванию.

Вернуться на верх