问题一 reload(sys)报错
解决方法:
import importlib
importlib.reload(sys)
问题二 django-simple-serializer库安装失败
下载django-simple-serializer-2.0.7.tar.gz,解压后,修改setup.py文件:
import importlib
importlib.reload(sys)
LONG_DESCRIPTION =open('README.rst','r', encoding='UTF-8').read()
运行python setup.py install,成功。
问题三 数据库报错django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
注释掉检测数据库版本的代码(packages/django/db/backends/mysql/base.py", line 36, in <module>):
# if version < (1, 3, 13):
# raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
问题四 运行报错AttributeError: 'str' object has no attribute 'decode'
解决办法:打开"\lib\site-packages\django\db\backends\mysql\operations.py"文件把146行的decode修改为encode即可。
if query is not None:
query = query.decode(errors='replace')
问题五 django-simple-serializer库,使用报错'AutoField' object has no attribute 'rel'
pro_id_name = serializer(projects, include_attr=("id", "name", "project_abbr", "latest_ver"))
问题起因:在django1.9及之后版本,autoField字段类型使用remote_field而不是ref,需要做一下兼容。
解决方法:https://github.com/bluedazzle/django-simple-serializer/issues/8
修改django_simple_serializer-2.0.7-py3.6.egg包里的Serializer.py文件,函数data_inspect里增加判断:
for field in concrete_model._meta.local_fields:
# 检查 field 是否存在 rel 这个属性,为'AutoField' object has no attribute 'rel'错误填坑
if hasattr(field, 'rel'):
if field.rel is None:
if self.check_attr(field.name) and hasattr(data, field.name):
obj_dict[field.name] = self.data_inspect(getattr(data, field.name))
else:
if self.check_attr(field.name) and self.foreign:
obj_dict[field.name] = self.data_inspect(getattr(data, field.name))
else:
if self.check_attr(field.name) and hasattr(data, field.name):
obj_dict[field.name] = self.data_inspect(getattr(data, field.name))
网友评论