I need to verify if an object exists and return the object, then based on that perform actions. What\'s the right way to do it without returning a 404?
try:
You can also do:
if not RealEstateListing.objects.filter(slug_url=slug).exists():
# do stuff...
Sometimes it's more clear to use try: except:
block and other times one-liner exists()
makes the code looking clearer... all depends on your application logic.
I would not use the 404 wrapper if you aren't given a 404. That is misuse of intent. Just catch the DoesNotExist, instead.
try:
listing = RealEstateListing.objects.get(slug_url=slug)
except RealEstateListing.DoesNotExist:
listing = None
I would do it as simple as follows:
listing = RealEstateListing.objects.filter(slug_url=slug)
if listing:
# do stuff
I don't see a need for try/catch. If there are potentially several objects in the result, then use first() as shown by user Henrik Heino
listing = RealEstateListing.objects.filter(slug_url=slug).first()