使用 djangocms 发布页面更改时出现“NodeAlreadySaved”错误

问题描述

使用djangocms发布页面更改时遇到错误

当我运行 tail -f /var/log/apache2/error.log 时,它返回:

treebeard.exceptions.NodeAlreadySaved: Attempted to add a tree node that is already in the database,referer: http://47.95.254.172/?edit

当我允许 settings.py DEBUG= True 并单击“发布页面更改”按钮时:

NodeAlreadySaved at /admin/cms/page/1/en/publish/
Attempted to add a tree node that is already in the database
Request Method: POST
Request URL:    http://47.95.254.172/admin/cms/page/1/en/publish/
Django Version: 3.1.7
Exception Type: NodeAlreadySaved
Exception Value:    Attempted to add a tree node that is already in the database
Exception Location: /root/env1/lib/python3.8/site-packages/treebeard/mp_tree.py,line 326,in process
Python Executable:  /root/env1//bin/python
Python Version: 3.8.5

我已经运行了 python manage.py cms fix-tree 但它没有用。虽然 python manage.py cms check 返回 10 个检查成功!

我部署了 djangocms 项目:

apache2.4.41

mod-wsgi 4.8.0

django 3.1.7

django-cms 3.8.0

venv中python版本是3.8.5,mod-wsgi是venv中python3.8.5编译的。

感谢您的帮助!

解决方法

降级到4.5.1以下的django-treebeard版本,例如4.4. 4.5.1 版本似乎不兼容。

pip install django-treebeard==4.4
,

您还可以修改 requirements.txt 文件以反映不是 django-treebeard 的其他 4.5.1 版本:

django-treebeard>=4.0,!=4.5.1

然后你可以运行:

pip install -r requirements.txt