как поймать MultipleObjectsReturned ошибку в django
можно ли поймать MultipleObjectsReturned
ошибка в Django?
Я делаю поисковый запрос, и если есть более одного объекта, я хочу, чтобы первый в списке был взят, поэтому я попробовал это:
try:
Location.objects.get(name='Paul')
except MultipleObjectsReturned:
Location.objects.get(name='Paul')[0]
однако он существует в doc хотя
глобальная переменная MultipleObjectsReturned не существует
3 ответов
Это не лучшая практика. Технически это можно сделать без использования исключений. Вы намеревались использовать Location
и Car
в этом примере?
вы можете сделать это:
Location.objects.filter(name='Paul').order_by('id').first()
я настоятельно рекомендую вам прочитать ссылку API Django QuerySet.
https://docs.djangoproject.com/en/1.8/ref/models/querysets/
чтобы ответить на ваш вопрос о том, где существует исключение-вы всегда можете получить доступ к этим исключениям QuerySet на самой модели. Е. Г. Location.DoesNotExist
и Location.MultipleObjectsReturned
. Вам не нужно импортировать их, если у вас уже есть импортированная модель.
использовать фильтр:
Location.objects.filter(name='Paul').first()
или импортируйте исключение:
from django.core.exceptions import MultipleObjectsReturned
...
try:
Location.objects.get(name='Paul')
except MultipleObjectsReturned:
Location.objects.filter(name='Paul').first()
Это более подходящие для Python способ сделать это.
try:
Location.objects.get(name='Paul')
except Location.MultipleObjectsReturned:
Location.objects.filter(name='Paul')[0]