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

StackOverflow https://stackoverflow.com/questions/639836

  •  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() 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top