TypeError:__ init __()缺少1个必需的位置参数:远程服务器CentOS7.2中的'on_delete'

时间:2017-12-05 09:14:26

标签: python django

在我的Mac中,我使用PyCharm很好地运行我的Django项目。

但在远程服务器中,我使用相同的命令来运行我的项目:

python3 manage.py runserver 8001

出现了问题:

File "/var/www/html/Qiyun02//user_admin_productmanage_cloudserver/models.py", line 3, in <module>
        from xxx.qiyun_admin_productconfig_cloudserver.models import (
      File "/var/www/html/Qiyun02/qiyun_admin_productconfig_cloudserver/models.py", line 109, in <module>
        class Disk(models.Model):
      File "/var/www/html/Qiyun02/qiyun_admin_productconfig_cloudserver/models.py", line 110, in Disk
        diskEssenceType = models.ForeignKey(to=DiskEssenceType, related_name='disks')  #  "SAS", "SSD" and so on 
    TypeError: __init__() missing 1 required positional argument: 'on_delete'

我知道on_delete错误意味着。但我的意思是,在我的Mac中为什么没有显示错误?这是否与django版本有关?

我的本​​地Mac Django版本为1.11.2

远程服务器CentOS7.2版本为python-django-1.8.14-1.el7.noarch

修改

拜托,我知道那里的on_delete错误,我的意思是,在我的Mac中,没有提醒,为什么我复制到CentOS7.2远程服务器有这个问题?这是否是由django版本引起的?

编辑-2

我也将远程服务器django版本升级到1.11.2。但仍然有同样的错误。

编辑-3

来自document

  

多对一的关系。需要两个位置参数:与模型相关的类和on_delete选项。 (实际上并不需要on_delete,但是不提供它会给出弃用警告。在Django 2.0中将需要它。)

你知道,我的django版本现在在我的CentOS7.2远程服务器上是1.11.2,为什么会出现问题呢?

编辑-4

我没有虚拟环境。

我使用bellow命令:

python3 manage.py shell

得到同样的问题。

编辑-5

最后,我发现我的python3使用了django 2.0。这就是问题所在。

python3 -m django --version
2.0

1 个答案:

答案 0 :(得分:1)

根据文档,您看到的错误仅发生在Django 2.0上。请使用shell

检查您的Django版本
python manage.py shell
>>> import django
>>> django.VERSION

还要考虑使用虚拟环境。这就是应该如何建立一个项目。