Как правильно проверить, существует ли объект в представлении django без возврата 404?

Мне нужно проверить, существует ли объект и вернуть его, затем на основе этого выполнить действия. Какой правильный способ сделать это, не возвращая 404?

try:
    listing = RealEstateListing.objects.get(slug_url = slug)
except:
    listing = None

if listing:

Ответ 1

Я бы не использовал обертку 404, если вам не дано 404. Это неправильное использование намерений. Вместо этого поймайте DoNotExist.

try:
    listing = RealEstateListing.objects.get(slug_url=slug)
except RealEstateListing.DoesNotExist:
    listing = None

Ответ 2

Вы также можете сделать:

if not RealEstateListing.objects.filter(slug_url=slug).exists():
    # do stuff...

Иногда бывает проще использовать try: except: block, а иногда, когда exists() одна строка exists() код выглядит более понятным... все зависит от логики вашего приложения.

Ответ 3

listing = RealEstateListing.objects.filter(slug_url=slug).first()