web-dev-qa-db-fra.com

Quelle est la bonne façon de valider si un objet existe dans une vue Django sans retourner 404?

J'ai besoin de vérifier si un objet existe et de retourner l'objet, puis en fonction de cela, effectuer des actions. Quelle est la bonne façon de le faire sans retourner un 404?

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

if listing:
83
Rasiel

Je n'utiliserais pas le wrapper 404 si on ne vous donne pas de 404. C'est un abus d'intention. Attrapez simplement le DoesNotExist à la place.

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

Vous pouvez également faire:

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

Parfois, il est plus clair d'utiliser le bloc try: except: Et d'autres fois, une seule ligne exists() rend le code plus clair ... tout dépend de la logique de votre application.

176
zzart
listing = RealEstateListing.objects.filter(slug_url=slug).first() 
4
Henrik Heino