Подтвердить что ты не робот

Для моделей Django есть ярлык для просмотра, существует ли запись?

Скажем, у меня есть таблица People, есть ли способ быстро проверить, существует ли объект People с именем 'Fred'? Я знаю, что могу запросить

People.objects.filter(Name='Fred')

а затем проверить длину возвращаемого результата, но есть ли способ сделать это более элегантным способом?

4b9b3361

Ответ 1

Обновить:

Как упоминалось в более поздних ответах, поскольку Django 1.2 вместо этого можно использовать метод exists() (ссылка).


Исходный ответ:

Не используйте len() для результата, вы должны использовать People.objects.filter(Name='Fred').count(). Согласно документации django,

count() выполняет SELECT COUNT (*) за кулисами, так что вы должны всегда используйте count() вместо загрузки все записи в объекты Python и вызов len() на результат (если вам не нужно загружать объекты в любом случае, в этом случае len() будет быстрее).

источник: Django docs

Ответ 3

Как и в Django 1.2, вы можете использовать .exists() в QuerySet, но в предыдущих версиях вы можете пользоваться очень эффективным трюком, описанным в этот билет.

Ответ 4

Вы можете использовать count() Например:

People.objects.filter(Name='Fred').count()

Если столбец Name уникален, вы можете сделать следующее:

try:
  person = People.objects.get(Name='Fred')
except (People.DoesNotExist):
  # Do something else...

Вы также можете использовать get_object_or_404() Например:

from django.shortcuts import get_object_or_404
get_object_or_404(People, Name='Fred')