配置完成一系列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, 不再报错:*