Проверка на наличие внешнего ключа foreign key. Ошибка DoesNotExist

8 октября 2014 г. 9:28

Если проверить наличие внешнего ключа поля ForeignKey у экземпляра модели, которая не имеет этот внешний ключ, то выйдет ошибка: DoesNotExist, так как у модели нет этого атрибута. Это не тот случай, когда модель имеет атрибут, но его значение None, поэтому нам выводится ошибка, что атрибут не найден.

Допустим имеется класс Person, содержащий поле school, которое является внешним ключом класса School.

Пусть в базе данных существует person с id=1 без school:

person = Person.objects.get(id=1)
if person.school:
   # to do something

Получим DoesNotExist.

Используя встроенную функцию hasattr(obj, 'field'), получим False, если в БД отсутствует связь с другой таблицей:

person = Person.objects.get(id=1)
if hasattr(person, 'school'):
   # to do something

Теперь ошибки не будет.

Оцените статью

0 из 5 (всего 0 оценок)

Поля, отмеченные звёздочкой ( * ) , являются обязательными.

Спасибо за ваш отзыв!

Автор статьи

Права на использование материала, расположенного на этой странице http://vivazzi.ru/it/foreign-key-checking/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Мальцев Артём
Ссылка на статью: <a href="http://vivazzi.ru/it/foreign-key-checking/">http://vivazzi.ru/it/foreign-key-checking/</a>

Подробнее: Правила использования сайта

Комментариев: 0

Вы можете оставить комментарий как незарегистрированный пользователь. Но, зарегистрировавшись, вы сможете получать оповещения об ответах, а также иметь доступ к своему личному аккаунту для просмотра своих комментариев.

Чтобы оставить комментарий от своего имени войдите или зарегистрируйтесь обычным способом или через социальные сети:

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте