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, 不再报错:*
这里写图片描述

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

这里写图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值