Since django-2.0 ForeignKey字段 [Django 文档] and OneToOneField字段 字段现在有一个必需的on_delete范围.
这是在Django-2.0 的发行说明如下2.0 中删除的功能:
The on_delete
争论 for ForeignKey
and OneToOneField
is 现在需要在模型和迁移中。考虑挤压迁移这样你就可以减少它们的数量更新.
因此,您应该检查您的迁移文件ForeignKey
s and OneToOneField
s,并添加一个on_delete
参数,如:
class Migration(migrations.Migration):
initial = False
dependencies = [
('app', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Model',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('some_foreignkey', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app.OtherModel')),
],
),
]
您应该检查文档关于on_delete范围查看最适合每种情况的删除策略。在撰写本文时,选项是CASCADE
, PROTECT
, SET_NULL
, SET_DEFAULT
, SET(..)
, DO_NOTHING
.
如果您没有指定on_delete
在预django-2.0版本,它默认为CASCADE
。因此,如果您想要相同的行为,您应该添加on_delete=models.CASCADE
。这在1.11版本的文档on_delete:
自 1.9 版起已弃用:on_delete 将成为 Django 2.0 中的必需参数。在旧版本默认为CASCADE
.