18.06.2009 23:12

  1. niro.biz

    0 ↑
    0 ↓
    Приветствую !
    Давно столкнулся с проблемой большого количества запросов, которые появляются в основном из шаблонов.
    К примеру есть простая модель Example, содержащая поля user = ForeignKey(User), text = Textfield()
    Для шаблона делаю запрос Example.objects.all()[:10]
    В шаблоне примерно так:
    
    {% for i in objects %}
    {{i.user}}<br /> {{i.text}}
    {% endfor %}
    

    После выполнения запроса, я получаю 20 запросов(т.е. в 2 раза больше чем самих элементов) вида
    
    SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = %s 
    


    Как бы это упростить, и вообще, каким образом можно сократить количество запросов из шаблона ?
  2. Imbolc

    0 ↑
    0 ↓

    {% for i in objects.select_related %} ?:)

  3. можно еще во вьюхе выбрать все сразу, что-то вроде:
    objects = list(objects.select_related())


    будет 1 запрос (а в шаблоне запросов не будет совсем), только все 10 записей сразу в память загрузятся
  4. niro.biz

    0 ↑
    0 ↓
    Ок, спасибо, частично это уменьшило запросы.
    А как быть с get_profile в шаблоне ?

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.