最近在尝试写一个Django的OA管理系统,运用Django3+xadmin的方式做admin的管理页面
但是Django3和xadmin的兼容性并不是特别好,中间也是踩了不上雷,花掉很多时间去适配,下面整理一些我见到过的坑,算是避免以后再做的时候浪费很多时间去解决适配的问题
问题1: ImportError: cannot import name ‘six’
# 解决方法
pip install six
然后找到 Lib\site-packages 下的six.py 复制到 django/utils下面
问题2: ImportError: cannot import name ‘python_2_unicode_compatible’
# 找到对应PY文件
from django.utils.encoding import force_text, python_2_unicode_compatible
# 改为
from django.utils.encoding import force_text
from django.utils.six import python_2_unicode_compatible
问题3: ModuleNotFoundError: No module named ‘django.contrib.staticfiles.templatetags’
# 找到对应PY文件
if 'django.contrib.staticfiles' in settings.INSTALLED_APPS:
from django.contrib.staticfiles.templatetags.staticfiles import static
else:
from django.templatetags.static import static
# 改为
if 'django.contrib.staticfiles' in settings.INSTALLED_APPS:
from django.contrib.staticfiles.templatetags.staticfiles import static
else:
from django.templatetags.static import static
问题4:ModuleNotFoundError: No module named FieldDoesNotExist
这个是我碰到最麻烦的,是因为Django3中db模块并没有FieldDoesNotExist类
而是将这个类移到了Django.core.excepitons中
解决办法是在django/db/models/fields/init.py中导入django.core.excepitons
然后再在__all__+=[ ]中添加FieldDoesNotExist