Закрыть

Для эффективной работы на сайте используются cookie и обработка персональных данных. Пользуясь этим сайтом, вы соглашаетесь с правилами использования сайта. Подробнее

Цитата дня

Vivazzi.ru

Личный сайт Мальцева Артема

Чтобы стать победителем, сначала нужно победить свою лень.

Проверка на наличие внешнего ключа 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>

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

Вам нужно саморазвиваться или вы хотите зарабатывать деньги?

Или вы ищите хорошие IT сервисы или книги? Сохраните свое время и взгляните на мою подборку рекомендаций, которыми постоянно пользуюсь.
Посмотреть рекомендации

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

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

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

Отправить

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

Попробуйте