Wagtail 4.1, объект 'NoneType' не имеет атрибута '_inc_path'
Я пытаюсь интегрировать wagtail в существующий проект django, но получаю вышеуказанную ошибку при добавлении дочерней страницы.
В своих настройках я следовал инструкциям следующим образом:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'whitenoise.runserver_nostatic',
'home',
'news',
'wagtail.contrib.forms',
'wagtail.contrib.redirects',
'wagtail.embeds',
'wagtail.sites',
'wagtail.users',
'wagtail.snippets',
'wagtail.documents',
'wagtail.images',
'wagtail.search',
'wagtail.admin',
'wagtail',
'modelcluster',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django_permissions_policy.PermissionsPolicyMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'wagtail.contrib.redirects.middleware.RedirectMiddleware',
]
урлы моих проектов:
from django.urls import include, path
from django.conf import settings
from django.conf.urls.static import static
from django.urls import reverse
from wagtail.admin import urls as wagtailadmin_urls
from wagtail import urls as wagtail_urls
from wagtail.documents import urls as wagtaildocs_urls
urlpatterns = [
path('', include('home.urls')),
path('news/', include('news.urls')),
path('cms/', include(wagtailadmin_urls)),
path('documents/', include(wagtaildocs_urls)),
path('news/', include(wagtail_urls)),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
мои новостные ссылки:
from django.urls import path
from .views import news_article_detail
urlpatterns = [
path('news/<int:pk>/', news_article_detail, name='news_article_detail'),
]
в моем новостном представлении:
from django.shortcuts import render
from .models import NewsArticlePage
#import pdb; pdb.set_trace()
def news_article_detail(request, pk):
news_article = NewsArticlePage.objects.get(pk=pk)
return render(request, 'news/news_page.html', {'news_article': news_article})
и моя модель:
from django.db import models
from wagtail.core.models import Page
from wagtail.admin.edit_handlers import FieldPanel
from wagtail.core.fields import RichTextField
class NewsArticlePage(Page):
article_body = RichTextField(blank=True)
content_panels = Page.content_panels + [
FieldPanel('article_body'),
]
template = "news/news_page.html"
и в моем шаблоне:
{% extends "base.html" %}
{% block content %}
<h1>{{ page.title }}</h1>
{{ page.article_body|richtext }}
{% endblock %}
Я также добавил корневую страницу, убедился, что url'ы указывают на правильное место, сделал миграции & мигрировал, но все равно получаю ту же ошибку.
'NoneType' object has no attribute '_inc_path'
обычно указывает на то, что внутренние поля (path
, depth
, numchild
), определенные библиотекой django-treebeard для отслеживания количества дочерних элементов в дереве страницы, стали непоследовательными. Неясно, что могло вызвать это, но выполнение ./manage.py fixtree
должно исправить ситуацию.