Comments 15
Спасибо
Наши ряды ширятся :)
The requested URL /2007/11/prosto-fork.html was not found on this server.
Опс) Глюк MT. Поправил, спасибо! :)
В случае же, когда нужно распараллелить выполнение задач, картина такая:
Допустим, веб-сервер получает запрос на подключение.
Впринципе, это просто. Но то как объясняется в большинстве источников, мягко говоря, показывает это со сложной стороны. Надеюсь, эта заметка кому-то поможет.
Я так понимаю, самое интересное потеряно? :)
Спасибо. У вас там в оригинале строки режутся по ширине и не видно конца SQL.
Потрясающе, вы просто читаете мои мысли.
Я как раз думал над этим.
Я как раз думал над этим.
> Единственная проблема, select_score нужно вызывать непосредственно у менеджера. У QuerySet
> такого свойства нет. (готов выслушать предложения на этот счёт)
>
предложение:
class ScoreOrderManager(models.Manager):
def get_query_set(self):
""" Выбрать результаты голосования по объекту """
from django.contrib.contenttypes.models import ContentType
model_type = ContentType.objects.get_for_model(self.model)
table_name = self.model._meta.db_table
return super(ScoreOrderManager, self).get_query_set().extra(select={'score': 'SELECT SUM(vote) FROM votes WHERE content_type_id=%i AND object_id=%s.id' % (int(model_type.id), table_name)})
.... определяем менеджер...
Теперь:
Article.mymanager.order_by('-score')
> такого свойства нет. (готов выслушать предложения на этот счёт)
>
предложение:
class ScoreOrderManager(models.Manager):
def get_query_set(self):
""" Выбрать результаты голосования по объекту """
from django.contrib.contenttypes.models import ContentType
model_type = ContentType.objects.get_for_model(self.model)
table_name = self.model._meta.db_table
return super(ScoreOrderManager, self).get_query_set().extra(select={'score': 'SELECT SUM(vote) FROM votes WHERE content_type_id=%i AND object_id=%s.id' % (int(model_type.id), table_name)})
.... определяем менеджер...
Теперь:
Article.mymanager.order_by('-score')
Как вариант пойдёт, но тогда эти результаты будут грузиться постоянно. Не всегда такое подойдёт. (кстати, первый вариант был именно таким, но по выше изложенным причинам от него отказался)
Тогда непонятен смысл добавления mymanager в класс Article. Достаточно создать свой менеджер, в нем метод select_score и перегрузить Article.objects своим менеджером. Дальше вызывать Article.objects.select_score(). Это сделает код более консистентным и понятным на мой взгляд.
кто-нибудь ещё тут пробовал django-votinng? какие отзывы?
Sign up to leave a comment.
django-voting сортировка по рейтингу