我正在使用django rest框架来处理聊天应用程序以返回消息列表。
这些是我在api.py中的代码
class MessageList(generics.ListAPIView):
queryset = Message.objects.all()
serializer_class = MessageSerializer
pagination_class = MessagePagination
def get_queryset(self):
queryset = super(MessageList, self).get_queryset()
return queryset.filter(room__id=self.kwargs.get('pk')).order_by('id')
使用http://localhost:8000/chats/message-list/[room_pk]/?page= ?,我能够在不同的页面中获取我想要的消息列表。
但是,我希望默认返回最后一页,因为我也将在稍后实现js无限滚动。换句话说,通过输入网址http://localhost:8000/chats/message-list/[room_pk]/,将返回最后一页对象。
我在django休息框架中相当新,所以我非常感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
您可以使用以下内容获得所需的数据/结果。
return queryset.filter(room__id=self.kwargs.get('pk')).order_by('-id')
知道-
任何字段都可以改变排序顺序,不管是字母(字符串)还是数字(int)。快乐的Python给你!
答案 1 :(得分:0)
如果您只需要查看最新的对象,则可以考虑覆盖模型的ordering
属性。
class Message(models.Model):
....
....
class Meta:
ordering = ('-id', )
通过设置Meta
属性ordering
,您隐式默认此模型的所有查询集以返回最新创建的对象。这样您就不必为相同的功能编写不必要的代码。
PS:不要忘记makemigrations
和migrate
。