我有这个模型
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/