Paul Bernhard Wagner Paul Bernhard Wagner - 7 months ago 54
Python Question

how to catch the MultipleObjectsReturned error in django

Is it possible to catch the

MultipleObjectsReturned
error in Django?

I do a searchquery and if there are more than one objects I want that the first in the list will be taken so I tried this:

try:
Location.objects.get(name='Paul')
except MultipleObjectsReturned:
Location.objects.get(name='Paul')[0]


However, it exists in the doc though


global variable MultipleObjectsReturned does not exist

Answer

This isn't the best practice. You can technically do this without using exceptions. Did you intend to use Location and Car in this example?

You can do this:

Location.objects.filter(name='Paul').order_by('id').first()

I strongly suggest you read the Django QuerySet API reference.

https://docs.djangoproject.com/en/1.8/ref/models/querysets/

To answer your question about where the exception exists -- you can always access these QuerySet exceptions on the model itself. E.g. Location.DoesNotExist and Location.MultipleObjectsReturned. You don't need to import them if you already have the model imported.

Comments