有没有办法使用 django 的内置分页对 rawqueryset 进行分页?当我将它转换为列表时,它会在我的脸上抛出一个错误 ...TypeError: expected string or Unicode object, NoneType found。有没有解决的办法?
问问题
5925 次
3 回答
16
我设法使用以下方法实现了它:
paginator = Paginator(files, 12)
paginator._count = len(list(files))
django.core.paginator.py 中的代码:
- 检查是否设置了 _count
- 如果没有,则尝试运行不存在的 .count()
- 如果没有,那么尝试普通 len
raw_queryset 上的 len 不起作用,但是在 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 回答