django pagination и RawQuerySet - PullRequest
       21

django pagination и RawQuerySet

11 голосов
/ 01 марта 2011

Есть ли способ разбить на rawqueryset, используя встроенную нумерацию страниц django? когда я приводил его к списку, он выдавал ошибку в моем лице ... Ошибка типа: ожидаемая строка или объект Unicode, найден NoneType. Есть ли способ обойти это?

Ответы [ 3 ]

15 голосов
/ 29 марта 2011

Мне удалось добиться этого с помощью следующего:

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

код в django.core.paginator.py:

  • проверяет, установлено ли _count
  • если нет, то пытается запустить .count (), который не существует
  • если нет, то пытается просто len

len на raw_queryset не работает, но преобразование фактического объекта paginator в список работает для меня в Django 1.3

5 голосов
/ 14 марта 2012

Вы можете установить количество атрибутов вручную для вашего объекта 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
0 голосов
/ 26 мая 2014
qs.filter(**pfilter).distinct().extra(select={'test': 'COALESCE(`psearch_program`.`eu_price`, 999999999)'}).extra(order_by=['test'])
...