12

djangoの組み込みのページ付けを使用してrawquerysetをページ付けする方法はありますか?それをリストにキャストすると、私の顔にエラーがスローされます... TypeError:予期された文字列またはUnicodeオブジェクト、NoneTypeが見つかりました。これを回避する方法はありますか?

4

3 に答える 3

16

私は以下を使用してそれを達成することができました:

paginator = Paginator(files, 12)
paginator._count = len(list(files))

django.core.paginator.py のコード:

  • _count が設定されているかどうかを確認します
  • そうでない場合は、存在しない .count() を実行しようとします
  • そうでない場合は、単純なlenを試します

raw_queryset の len は機能しませんが、実際の paginator オブジェクトをリストに変換すると Django 1.3 で見つかります

于 2011-03-28T21:57:27.927 に答える
5

RawQuerySet オブジェクトの属性カウントを手動で設定できます。

items = Item.objects.raw("select * from appitem_item")

def items_count():
    cursor = connection.cursor()
    cursor.execute("select count(*) from appitem_item")
    row = cursor.fetchone()
    return row[0]

items.count = items_count

@Rockalliteのために

>>> class A():
...    def b(self):
...        print 'from b'
... 
>>> 
>>> (A()).b()
from b
>>> def c():
...    print 'from c'
... 
>>> a = A()
>>> a.b = c
>>> a.b()
from c
于 2012-03-14T06:53:49.460 に答える
-1
qs.filter(**pfilter).distinct().extra(select={'test': 'COALESCE(`psearch_program`.`eu_price`, 999999999)'}).extra(order_by=['test'])
于 2014-05-26T15:56:30.207 に答える