Сортировка селектора запросов
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"
, в зависимости от того, хотите ли вы, чтобы они были отсортированы по возрастанию/по убыванию.