【发布时间】:2021-11-09 12:53:13
【问题描述】:
我正在构建一个聊天应用程序,并有以下模型代表聊天室、聊天消息和未读消息计数器
class ChatRoom(BaseModel):
name = models.CharField(max_length=255, default='', blank=True)
participants = models.ManyToManyField('accounts.User', related_name='chat_rooms')
class ChatMessage(BaseModel):
text = models.TextField(default='', blank=True)
owner = models.ForeignKey('accounts.User', on_delete=models.CASCADE)
room = models.ForeignKey(ChatRoom, on_delete=models.CASCADE, related_name='messages')
class ChatRoomUnreadMessagesCounter(BaseModel):
room = models.ForeignKey(ChatRoom, on_delete=models.CASCADE, related_name='unread_counters')
owner = models.ForeignKey('accounts.User', on_delete=models.CASCADE)
messages_count = models.IntegerField(default=0)
class BaseModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
is_deleted = models.BooleanField(default=False)
class Meta:
abstract = True
我想创建一个 API 视图,该视图将返回按以下方式排序的 ChatRoom 对象列表:ChatRoom 具有按消息计数排序的未读消息的对象 -> ChatRoom 具有消息的对象最新消息 created_at 后进先出 -> ChatRoom 按字母顺序排序的对象。我将如何正确构建我的查询集?
这是预期的结果输出
| Room Name | Unread Messages | Last Message |
| Rean | 2 | 09.11.2021T12:00:00 |
| Ash | 1 | 09.11.2021T12:00:24 |
| Altina | 0 | 09.11.2021T12:15:00 |
| Juna | 0 | 09.11.2021T12:14:00 |
| Kurt | 0 | 09.11.2021T12:13:00 |
| Musse | 0 | 09.11.2021T12:12:00 |
| Sharon | 0 | No messages yet |
【问题讨论】:
标签: python django django-rest-framework