Как правильно проверить, существует ли объект в представлении 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()