Джанго: хочу улучшить скорость запроса - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть приложение django, которое отображает список элементов для каждого клиента. он отображает идентификатор элемента, альтернативный идентификатор, заголовок и другую информацию. Поскольку у меня много элементов (у каждого клиента может быть тысяча элементов), загрузка всех элементов может занять очень много времени. Есть ли способ улучшить эту скорость?

def client_items(request, client_id = 0):
    client = None
    items = None
    try:
        client = models.Client.objects.get(pk = client_id)
        items = client.storageitem_set.all()
    except:
        return HttpResponse(reverse(return_clients))
    return render_to_response('items.html', {'items':items, 'client':client}, context_instance = RequestContext(request))

{% for item in items %}
        <tr class="items_table_row">
                <td><input type="checkbox" name="{{item.pk}}" value="{{item.pk}}" checked="checked"></td>
                <td>{{item.company_id}}</td><td>{{item.alternative_id}}</td><td>{{item.title}}</td><td>{{item.type}}</td><td>{{item.format}}</td>
                <td><span id="{{item.pk}}" name="type">{{item.itemstatushistory_set.latest}}</span></td><td>{{item.itemstatushistory_set.latest.date.date|date:"d M Y"}}</td>
{% endfor %}

Ответы [ 3 ]

2 голосов
/ 18 апреля 2011
0 голосов
/ 18 апреля 2011

Убедитесь, что элементы загружены с постоянным количеством запросов к базе данных.Для большинства представлений вы сможете загружать все свои данные только с одним чтением базы данных.

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

0 голосов
/ 18 апреля 2011

Результаты разбивки на страницы в нечто более управляемое, чем тысячи предметов Без нумерации страниц это не только медленно, но и дает плохой пользовательский опыт.

...