Как правильно проверить, существует ли объект в представлении django без возврата 404?
-
11-07-2019 - |
Вопрос
Мне нужно проверить, существует ли объект, и вернуть его, затем на основе этого выполнить действия. Как правильно сделать это, не возвращая 404?
try:
listing = RealEstateListing.objects.get(slug_url = slug)
except:
listing = None
if listing:
Решение
Я бы не использовал оболочку 404, если вам не дали 404. Это неправильное использование намерений. Вместо этого просто перехватите DidNotExist.
try:
listing = RealEstateListing.objects.get(slug_url=slug)
except RealEstateListing.DoesNotExist:
listing = None
Другие советы
Вы также можете сделать:
if not RealEstateListing.objects.filter(slug_url=slug).exists():
# do stuff...
Иногда проще использовать блок try: исключением:
, а в других случаях использование однострочного ()
делает код более понятным ... все зависит от вашего приложения логика. Р>
listing = RealEstateListing.objects.filter(slug_url=slug).first()
Не связан с StackOverflow