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:
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
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.
listing = RealEstateListing.objects.filter(slug_url=slug).first()