我有这个模型

class messages(models.Model):
    status_choices = (
        (u'read',u'read'),
        (u'unread',u'unread')
        )
    user = models.ForeignKey(User)
    message = models.TextField()
    status = models.CharField(max_length=6,choices=status_choices,default='unread')
    sender = models.ForeignKey(User,related_name="sender")

现在我只想获取属于“user1”的前10条消息,在第二个请求中获取下10条消息,依此类推。我如何才能做到这一点?

最佳答案

django已经为Paginator对象提供了此功能。在您的url中,您需要一个page参数来说明您在哪个页面上,在您的视图中,您需要构造一个Paginator对象。您需要指定一个页面上的对象数(在您的例子中是10个),然后Paginator将完成其余操作。
例如,以下代码将打印第3页上显示的所有实例:

from django.core.paginator import Paginator

objects = messages.objects.all()
p = Paginator(objects, 10)
page3 = p.page(3)
print page3.object_list

文档提供了一些示例,说明如何实现视图以及如何将对象列表传递到模板。

关于python - Django:查询数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11433810/

10-10 15:19