Django 版本报错记录

前提:使用Django框架开发,一开始使用Django3.2

报错一:在使用jsonfield中的JSONField时报错
 File "/data/app/hn_data_collect/hn_data_collect/proxy/models.py", line 6, in <module>
    from .custom_fields import JSONField
  File "/data/app/hn_data_collect/hn_data_collect/proxy/custom_fields.py", line 2, in <module>
    from jsonfield import JSONField as upstream_JSONField
  File "/data/Envs/hn_data_collect/lib/python3.6/site-packages/jsonfield/__init__.py", line 3, in <module>
    from .fields import JSONField
  File "/data/Envs/hn_data_collect/lib/python3.6/site-packages/jsonfield/fields.py", line 11, in <module>
    from django.utils import six
ImportError: cannot import name 'six'

进过排查发现:Django3无法导入six

解决方法:

from django.utils import six

改为

import six

因为我的项目的特殊性,我将Django3.2改为Django2.2, 问题也能解决。

报错二:使用外键时报错
project = models.ForeignKey(Project)

错误信息如下:

TypeError: __init__() missing 1 required positional argument: 'on_delete'

经过排查:django 升级到2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常。

解决方法如下:


project = models.ForeignKey(Project, on_delete=models.CASCADE)

同样因为项目的特殊性,我将Django2.2改为Django1.11, 问题也能解决。

报错三:改为Django1.11时,path引入报错

from django.urls import path, include

改为

from django.conf.urls import url, include

原因:django1.11版本时,配置路由一直都是再用url方法,只要升到Django2才能使用path。

posted @ 2022-06-02 11:34  yingzi__block  阅读(86)  评论(0编辑  收藏  举报