Выполняя тестовое задание по программированию натолкнулся на то что у меня не подгружаются фикстуры (orders-fixture.json). Выдается ошибка:
Поиск в интернетах не сильно помог. Понимаю что проблема не в базе данных и не фикстурах а в том, что я что-то упускаю. И у меня не хватает связей между таблицами. Но опыта нет и я не догадался что к чему, и чего от меня требует данная ошибка.
Решил грохнуть базу данных и всё создать заново! Это было очень тупое решение. Но... "И опыт, сын ошибок трудных"...
БД больше нет... Хорошо хоть такую БД можно восстановить в течении 20 минут:
Пробуем запустить джанго-сервер, в консоли предупреждение о не сделанных миграциях. ОК, будем всё восстанавливать. Первым делом сделаем миграции.
python manage.py migrate
Затем создать админа баз данных
python manage.py createsuperuser
Затем снова создать необходимые продукты и заказы в нашем магазине, а так же парочку юзеров, одного со статусом is_staff (является персоналом). Начну с юзеров, чутка подправлю "админа", присвоив ему имя и фамилию. Ну и создам двух пользователей.
Создал какие-то товары, из этих товаров составил несколько заказов.
Теперь нужно заново выгрузить фикстуры методом вызова команды
python manage.py dumpdata
По идее теперь вся база обновлена и должно всё заработать, но возможно, я ничего не решил...
Не решил, та же самая ошибка, следовательно - пересоздание базы данных ничего не решает. Возвращаемся к поиску решения проблемы.
Нет проблем только с фиктурами пользователей, оно и понятно там вроде как связей между таблицами нет...
Что ж, попробуем снова поискать сию проблему в интернетах...
Для начала попробовать перевести в точности фразу:
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 работу по Джанго. Натолкнулся на такую мысль:
И тут до меня стало доходить, что я "заказы" загружаю, а ни "продуктов", ни "пользователей" не загружаю...
Может попробовать загрузить все остальные фикстуры и именно в том порядке:
- юзеры
- товары
- заказы
И о чудо, тест прошел без ошибок! И даже queryset заказов не пустой список!!!
БЛИИИИН, А ЛАРЧИК ПРОСТО ОТКРЫВАЛСЯ!!!
Я пытался загрузить фикстуры только одних заказов, игнорируя тот факт что нужны и продукты и заказы, дабы все работало как надо!!!!
И тут в голове появляется кадр из фильма "Бриллиантовая рука":
Ну вот, проблема, с которой я бился два дня - решена. Надеюсь эти мои мысли так же кого-то натолкнут на решение проблемы.
Всем всяческих бонусов, плюшек, здоровья и любви!