我目前有以下型号
class ChatRoom(models.Model):
creator = models.ForeignKey('User') # points to the initial user
class Message(models.Model):
room = models.ForeignKey('ChatRoom')
text = models.CharField(max_length=500)
date = models.DateTimeField()
from = models.ForeignKey('User') # points to some user
对于登录我网站的任何指定用户,我想显示他们创建的聊天室列表,按其上一条消息的日期(最新活动)以及输入聊天室的最后一条消息排序
类似
Your chat rooms
---------------
science - "hey guys, anyone know how to do calculus?" 5m
art - "hey guys, I like art" 10m
我如何在django中执行此查询?请记住,一个人可能有很多很多聊天室,因此我们无法使用ChatRoom.objects.all()
加载所有聊天室并手动迭代它。
答案 0 :(得分:2)
您需要与上一封邮件有额外的关系,否则您将无法按其订购。
class ChatRoom(models.Model):
creator = models.ForeignKey('User') # points to the initial user
# you will need to set this in view or with signals.(don't forget to handle delete)
last_message = models.ForignKey('Message')
你可以做到这一点
ChatRoom.objects.filter(...).order_by('last_message__date')