Домашняя страница веб-сайта не является дочерней корневой

У меня установка трясогузка с одним сайтом. У сайта есть домашняя страница, и все работает нормально на поверхности, но я как-то испортил древовидную структуру.

На корневой странице нет дочерних страниц. Если я попытаюсь создать страницу под корнем, я получу

ValidationError at /cms/pages/add/website/indexpage/1/
{'path': ['Page with this Path already exists.']}

Если я попытаюсь «переместить» домашнюю страницу в дочерний элемент корня, я не получу ошибки, но домашняя страница все равно не появится в списке корневых дочерних элементов.

Если я попытаюсь «переместить» другую страницу в дочерний элемент корня, я получаю следующую ошибку

IntegrityError at /cms/pages/115/move/1/confirm/
duplicate key value violates unique constraint "wagtailcore_page_path_key"
DETAIL:  Key (path)=(00010001) already exists.

Попытка загрузить данные в новую базу данных из дампа данных дает мне следующую ошибку

django.db.utils.IntegrityError: Problem installing fixtures: insert or update on table "website_highlightspage" violates foreign key constraint "website_highlightspage_page_id_0f12432c_fk_wagtailcore_page_id"
DETAIL:  Key (page_id)=(55) is not present in table "wagtailcore_page".

Похоже, я навсегда потерял свою домашнюю страницу, хотя я не совсем уверен, как я это сделал.

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


person brianf    schedule 27.04.2017    source источник


Ответы (1)


Попробуйте запустить ./manage.py fixtree — он может исправить определенные типы повреждения дерева (и даст больше информации о проблемах, которые он не может исправить автоматически). Я бы посоветовал сначала сделать резервную копию базы данных в качестве меры предосторожности.

person gasman    schedule 27.04.2017
comment
Да. Это правильное исправление. Столбец num_child для корневой страницы был неправильно установлен в 0, что вызывало проблемы с древовидной структурой. Обновление вручную с помощью sql также устраняет проблему. Проблема с командой loaddata — отдельная тема. - person brianf; 28.04.2017