Django - 如何将列的所有值更改为空值?
Django - How change all values of a colum to null?
我有一个问题,我对我的模型做了一些更改,因为我有一个必须更改为 ForeignKey
的整数字段
好吧,为了避免错误,我为字段中的所有对象分配了值 derived_to
值 1。
我现在想将此列中的所有行标记为空。我该怎么做?这是我最近的两次迁移
class Migration(migrations.Migration):
dependencies = [
('work_order', '0026_auto_20170603_1517'),
]
operations = [
migrations.AlterModelOptions(
name='workorder',
options={'verbose_name': 'work order', 'verbose_name_plural': 'work orders'},
),
migrations.AlterField(
model_name='workorder',
name='derived_to',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='store.OutsourceOption', verbose_name='outsource'),
preserve_default=False,
),
]
最后一个
class Migration(migrations.Migration):
dependencies = [
('work_order', '0027_auto_20170605_0836'),
]
operations = [
migrations.AlterField(
model_name='workorder',
name='derived_to',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='store.OutsourceOption', verbose_name='outsource'),
),
]
这就是我需要进行新迁移以将 null 分配给列 derived_to
中 work_order 中的所有对象的全部内容,因为现在所有对象都 derived_to
指向在 OutsourceOptions 上的第一个注册是不正确的。
谢谢,对不起我的英语不好。
如果我没听错的话,您想将所有现有 derived_to
值设置为 null?你可以用 RunPython
Runs custom Python code in a historical context. code (and
reverse_code if supplied) should be callable objects that accept two
arguments;
def forwards_func(apps, schema_editor):
Workorder = apps.get_model('appname','Workorder')
Workorder.objects.update(derived_to=None)
像这样将其添加到迁移中:
operations = [
migrations.AlterField(
model_name='workorder',
name='derived_to',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='store.OutsourceOption', verbose_name='outsource'),
),
migrations.RunPython(forwards_func),
]
我有一个问题,我对我的模型做了一些更改,因为我有一个必须更改为 ForeignKey
好吧,为了避免错误,我为字段中的所有对象分配了值 derived_to
值 1。
我现在想将此列中的所有行标记为空。我该怎么做?这是我最近的两次迁移
class Migration(migrations.Migration):
dependencies = [
('work_order', '0026_auto_20170603_1517'),
]
operations = [
migrations.AlterModelOptions(
name='workorder',
options={'verbose_name': 'work order', 'verbose_name_plural': 'work orders'},
),
migrations.AlterField(
model_name='workorder',
name='derived_to',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='store.OutsourceOption', verbose_name='outsource'),
preserve_default=False,
),
]
最后一个
class Migration(migrations.Migration):
dependencies = [
('work_order', '0027_auto_20170605_0836'),
]
operations = [
migrations.AlterField(
model_name='workorder',
name='derived_to',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='store.OutsourceOption', verbose_name='outsource'),
),
]
这就是我需要进行新迁移以将 null 分配给列 derived_to
中 work_order 中的所有对象的全部内容,因为现在所有对象都 derived_to
指向在 OutsourceOptions 上的第一个注册是不正确的。
谢谢,对不起我的英语不好。
如果我没听错的话,您想将所有现有 derived_to
值设置为 null?你可以用 RunPython
Runs custom Python code in a historical context. code (and reverse_code if supplied) should be callable objects that accept two arguments;
def forwards_func(apps, schema_editor):
Workorder = apps.get_model('appname','Workorder')
Workorder.objects.update(derived_to=None)
像这样将其添加到迁移中:
operations = [
migrations.AlterField(
model_name='workorder',
name='derived_to',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='store.OutsourceOption', verbose_name='outsource'),
),
migrations.RunPython(forwards_func),
]