2

私はこのモデルを持っています

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 件のメッセージのみを取得し、2 番目のリクエストで次の 10 件のメッセージなどを取得したいと考えています。

4

2 に答える 2

3

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

ドキュメントには、ビューを実装する方法と、オブジェクトのリストをテンプレートに渡す方法の例が記載されています。

于 2012-07-11T13:34:03.900 に答える
0

まずは2点

  • モデルは大文字にする必要があります(慣例)
  • 「メッセージ」は contrib パッケージの一部であり、ネームスペースがないと、contrib のメッセージとアプリのメッセージの両方を使用しようとすると競合が発生します (https://docs.djangoproject.com/en/dev/ref/contrib/messages/#module -django.contrib.messages)

編集

私のコード例を削除し、Simeon Visser のソリューションをぶつけました

于 2012-07-11T13:39:22.003 に答える