¿Cuál es la forma correcta de validar si un objeto existe en una vista de django sin devolver 404?

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

  •  11-07-2019
  •  | 
  •  

Pregunta

Necesito verificar si existe un objeto y devolver el objeto, luego basándome en eso realizar acciones. ¿Cuál es la forma correcta de hacerlo sin devolver un 404?

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

if listing:
¿Fue útil?

Solución

No usaría el envoltorio 404 si no le dan un 404. Eso es mal uso de la intención. Simplemente tome el DoesNotExist, en su lugar.

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

Otros consejos

También puedes hacer:

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

A veces es más claro usar try: except: block y otras veces one-liner exist () hace que el código se vea más claro ... todo depende de su aplicación lógica.

listing = RealEstateListing.objects.filter(slug_url=slug).first() 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top