Comments 15
Спасибо
0
Наши ряды ширятся :)
+1
The requested URL /2007/11/prosto-fork.html was not found on this server.
0
Опс) Глюк MT. Поправил, спасибо! :)
0
В случае же, когда нужно распараллелить выполнение задач, картина такая:
Допустим, веб-сервер получает запрос на подключение.
Впринципе, это просто. Но то как объясняется в большинстве источников, мягко говоря, показывает это со сложной стороны. Надеюсь, эта заметка кому-то поможет.
Я так понимаю, самое интересное потеряно? :)
0
Спасибо. У вас там в оригинале строки режутся по ширине и не видно конца SQL.
0
Потрясающе, вы просто читаете мои мысли.
Я как раз думал над этим.
Я как раз думал над этим.
0
> Единственная проблема, 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')
0
Как вариант пойдёт, но тогда эти результаты будут грузиться постоянно. Не всегда такое подойдёт. (кстати, первый вариант был именно таким, но по выше изложенным причинам от него отказался)
0
Тогда непонятен смысл добавления mymanager в класс Article. Достаточно создать свой менеджер, в нем метод select_score и перегрузить Article.objects своим менеджером. Дальше вызывать Article.objects.select_score(). Это сделает код более консистентным и понятным на мой взгляд.
0
кто-нибудь ещё тут пробовал django-votinng? какие отзывы?
0
Sign up to leave a comment.
django-voting сортировка по рейтингу