Получение последних 10 записей из базы данных Django

Дата публикации: 28-04-2013 | Автор: MelfisFettel | Рубрика: Django

Python Django ORMПоявилась необходимиость, получить последние 10 записей из базы данных в Django проекте.
Все достаточно просто:
1) Для начала получим количество записей в таблице
2) Проверим не является ли количество записей менее чем 10 (Не обязательно 10, зависит от того сколько записей Вы хотите взять из таблицы. На моем примере 10)

3-1) Если записей меньше 10, возьмем с 0 по 10
3-2) Если записей более 10, вычтем из общего количества записей 10, (получим номер записи с которой начнем выборку)
4) Сделаем выборку из таблицы от [Общее количество записей - 10: Общее количество записей]
Код:

1
2
3
4
5
6
7
8
9
10
def LastTenRecords(request):
    try:
        Total = TableName.objects.filter().count()
        if Total > 10:
            LastTenR = TableName.objects.filter()[Total-10:Total]
        else:
            LastTenR = TableName.objects.filter()[0:10] 
        return LastTenR
    except:
        return ""
def LastTenRecords(request):
    try:
        Total = TableName.objects.filter().count()
        if Total > 10:
            LastTenR = TableName.objects.filter()[Total-10:Total]
        else:
            LastTenR = TableName.objects.filter()[0:10] 
        return LastTenR
    except:
        return ""

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

Понравилась статья? Расскажи друзьям:


Комментариев (3)

А так разве не проще?? «Entry.objects.all()[:10]«

Выберет первые 10 записей, а не последние 10.

from django.shortcuts import render

def last_post(request):
# можно взять хоть один объект определив нужный срез
test = Post.objects.order_by(«-id»)[0:10]
return render(request, ‘index.html’, {‘test’: test})

index.html

{% for item in test %}
{{ test }}
# или
{{ item.id }}
# или
{{ item. #любое значение которое есть в объекте }}
{% endfor %}

Обсудить