Метод first
Метод first применяется к QuerySet и возвращает первый объект из набора записей, отсортированный по первичному ключу или указанной сортировке. Если QuerySet пуст, метод возвращает None. Это удобный способ быстро получить одну запись без необходимости использовать индексацию или проверять наличие элементов.
Синтаксис
Model.objects.first()
Метод может быть вызван как на менеджере модели, так и на любом существующем QuerySet:
# На менеджере модели
first_article = Article.objects.first()
# На отфильтрованном QuerySet
first_published = Article.objects.filter(status='published').first()
Пример
Получим первую статью из базы данных:
from myapp.models import Article
first_article = Article.objects.first()
if first_article:
print(first_article.title)
else:
print("No articles found")
Результат выполнения кода:
"First article title"
Пример
Получим первую опубликованную статью, отсортированную по дате создания в порядке убывания:
from myapp.models import Article
first_published = Article.objects.filter(
status='published'
).order_by('-created_at').first()
if first_published:
print(f"Latest published: {first_published.title}")
Результат выполнения кода:
"Latest published: Newest article"
Пример
Используем метод first в паре с values для получения первого словаря из QuerySet:
from myapp.models import Article
first_article_data = Article.objects.values(
'title', 'status', 'created_at'
).first()
if first_article_data:
print(first_article_data)
Результат выполнения кода:
{'title': 'First article', 'status': 'draft', 'created_at': datetime.datetime(2025, 1, 1, 12, 0)}