понедельник, 6 февраля 2012 г.

Re: оптимизация

Mapped queries вполне решает проблему с большим количеством запросов. Неудобно поддерживать, но вполне удобно переписывать узкие куски. 

6 февраля 2012 г. 18:47 пользователь Arcady Chumachenko <arcady.chumachenko@gmail.com> написал:
Подозреваю, что дело в django-tagging:


post-init вызывается при создании объекта, т.е. при вытаскивании его из qs. Может, сделать что-то типа defer('tags') ?


2012/2/6 Sergey Zhizhenko <zlobnyiserg@gmail.com>
Попробуй сделать простейшую вью:

def view(request):
 post = Post.objects.all()[:1]
 print post
 return render_to_template('empty.html')

но главное не отдавай ей экземпляр post - есть подозрение что ты в шаблоне где-то обращаешься к полям Post, которые влекут дополнительные запросы.

Увидишь, что запрос будет один. А дальше разбирайся что творится в шаблоне твоей вьюхи и куда она там лазит так, что влечет выполнение дополнительных запросов. И делай этим полям .select_related().

On 06.02.2012, at 17:58, GSV wrote:

> class PublicManager(Manager):
>    """Returns published posts that are not in the future."""
>
>    def published(self):
>        return self.get_query_set().filter(status__gte=2,
> publish__lte=datetime.datetime.now())
>
>    def published_news(self):
>        return self.get_query_set().filter(Q(status__gte=2),
> Q(publish__lte=datetime.datetime.now())).exclude(Q(categories__slug='blogs'))
>
>    def published_blogs(self):
>        return self.get_query_set().filter(status__gte=2,
> publish__lte=datetime.datetime.now()).filter(categories__slug='blogs')
>
>    def all_my_blogs(self):
>        return self.get_query_set().filter(categories__slug='blogs')
>
>
> On 6 Лют, 15:56, Владимир Корсун <korsun.vladi...@gmail.com> wrote:
>> И что у вас в дефолтном менеджере?




--
Аркадий Чумаченко // Arcady Chumachenko
веб-проекты // web development
icq is no more, use google talk please
skype arcady.chumachenko
cell +7 911 701-0626 / +5 938 545-24-98
www http://ilvar.tumblr.com/


Комментариев нет:

Отправить комментарий