首页 > 解决方案 > 如何解决 TypeError:on_delete 必须在 Django 模型上可调用?

问题描述

突然我收到一条错误消息,说TypeError: on_delete must be callable.我不知道​​如何解决这个错误,因为field=models.ForeignKey(default=1, on_delete='CASCADE', to='main.Category'),我的代码中没有提到任何地方。

  File "/home/arch/myproject/main/migrations/0014_auto_20191025_1154.py", line 6, in <module>
    class Migration(migrations.Migration):
  File "/home/arch/myproject/main/migrations/0014_auto_20191025_1154.py", line 47, in Migration
    field=models.ForeignKey(default=1, on_delete='CASCADE', to='main.Category'),
  File "/home/arch/.local/lib/python3.8/site-packages/django/db/models/fields/related.py", line 801, in __init__
    raise TypeError('on_delete must be callable.')

TypeError: on_delete 必须是可调用的。

标签: pythondjangodjango-modelscascade

解决方案


您的一个模型中的一个字段具有:

class SomeModel(models.Model):
    # …
    field=models.ForeignKey(default=1, on_delete='CASCADE', to='main.Category')

但是您不能将字符串传递给on_delete=…参数,它应该是:

class SomeModel(models.Model):
    # …
    field=models.ForeignKey(default=1, on_delete=models.CASCADE, to='main.Category')

您还需要删除迁移文件 ( main/migrations/0014_auto_20191025_1154.py),并进行新的迁移。


推荐阅读