Django之celery报错

配置完成一系列celery后,执行 python3 manage.py migrate 时报错:

...(前面一堆报错)
File "/home/python/.virtualenvs/py_django/lib/python3.6/site-packages/djcelery/models.py", line 217, in PeriodicTask
    null=True, blank=True, verbose_name=_('interval'),
TypeError: __init__() missing 1 required positional argument: 'on_delete'

看到最后一行错误: TypeError: _init_() missing 1 required positional argument: ‘on_delete’, 在以前学习中使用到外键时遇见过同样报错, 需要添加一段代码 on_delete=models.CASCADE,比如:

hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE)

所以,我打开 /home/python/.virtualenvs/py_django/lib/python3.6/site-packages/djcelery/models.py,看到第217行:

这里写图片描述

发现这是一个外键,因此我将on_delete=models.CASCADE添加到后面:

这里写图片描述
再次执行, python3 manage.py migrate, 该行不再报错, 但又发现两处同样的错误:

第二处:
  File "/home/python/.virtualenvs/py_django/lib/python3.6/site-packages/djcelery/models.py", line 221, in PeriodicTask
    help_text=_('Use one of interval/crontab'),
TypeError: __init__() missing 1 required positional argument: 'on_delete'

第三处:
File "/home/python/.virtualenvs/py_django/lib/python3.6/site-packages/djcelery/models.py", line 354, in TaskState
    WorkerState, null=True, verbose_name=_('worker'),
TypeError: __init__() missing 1 required positional argument: 'on_delete'

同理, 在上面两处错误后添加 on_delete=models.CASCADE,

最后执行 *python3 manage.py migrate, 不再报错:*
这里写图片描述

查看数据库, 多了如下几张表:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_38038143/article/details/80286187
今日推荐