Найти в Дзене
Движение-Жизнь

Django. Ошибка при загрузке фикстур для тестирования

Выполняя тестовое задание по программированию натолкнулся на то что у меня не подгружаются фикстуры (orders-fixture.json). Выдается ошибка:

Поиск в интернетах не сильно помог. Понимаю что проблема не в базе данных и не фикстурах а в том, что я что-то упускаю. И у меня не хватает связей между таблицами. Но опыта нет и я не догадался что к чему, и чего от меня требует данная ошибка.

Решил грохнуть базу данных и всё создать заново! Это было очень тупое решение. Но... "И опыт, сын ошибок трудных"...

-2

БД больше нет... Хорошо хоть такую БД можно восстановить в течении 20 минут:

Пробуем запустить джанго-сервер, в консоли предупреждение о не сделанных миграциях. ОК, будем всё восстанавливать. Первым делом сделаем миграции.

python manage.py migrate

-3

Затем создать админа баз данных
python manage.py createsuperuser

-4

Затем снова создать необходимые продукты и заказы в нашем магазине, а так же парочку юзеров, одного со статусом is_staff (является персоналом). Начну с юзеров, чутка подправлю "админа", присвоив ему имя и фамилию. Ну и создам двух пользователей.

-5

Создал какие-то товары, из этих товаров составил несколько заказов.

Теперь нужно заново выгрузить фикстуры методом вызова команды
python manage.py dumpdata

-6

По идее теперь вся база обновлена и должно всё заработать, но возможно, я ничего не решил...
Не решил, та же самая ошибка, следовательно - пересоздание базы данных ничего не решает. Возвращаемся к поиску решения проблемы.
Нет проблем только с фиктурами пользователей, оно и понятно там вроде как связей между таблицами нет...
Что ж, попробуем снова поискать сию проблему в интернетах...
Для начала попробовать перевести в точности фразу:

django.db.utils.IntegrityError: Problem installing fixtures: The row in table 'shopapp_product' with primary key '1' has an invalid foreign key: shopapp_product.created_by_id contains a value '1' that does not have a corresponding value in auth_user.id.

яндекс переводчик не сильно много ясности добавил
яндекс переводчик не сильно много ясности добавил

Ладно, буду дальше искать решение. Опять роемся во всевозможных стэковерфлоу и прочих ресурсах, находится опять множество разной фигни но всё не то что мне нужно!

Ладно, пойду читать телегу, там где обсуждают 10 работу по Джанго. Натолкнулся на такую мысль:

-8

И тут до меня стало доходить, что я "заказы" загружаю, а ни "продуктов", ни "пользователей" не загружаю...

Может попробовать загрузить все остальные фикстуры и именно в том порядке:

  1. юзеры
  2. товары
  3. заказы
-9

И о чудо, тест прошел без ошибок! И даже queryset заказов не пустой список!!!

-10

БЛИИИИН, А ЛАРЧИК ПРОСТО ОТКРЫВАЛСЯ!!!
Я пытался загрузить фикстуры только одних заказов, игнорируя тот факт что нужны и продукты и заказы, дабы все работало как надо!!!!
И тут в голове появляется кадр из фильма "Бриллиантовая рука":

-11

Ну вот, проблема, с которой я бился два дня - решена. Надеюсь эти мои мысли так же кого-то натолкнут на решение проблемы.

Всем всяческих бонусов, плюшек, здоровья и любви!