【问题标题】:Django - How change all values of a colum to null?Django - 如何将列的所有值更改为空?
【发布时间】:2017-06-05 12:58:34
【问题描述】:

我有一个问题,我对模型进行了一些更改,因为我有一个整数字段必须更改为 ForeignKey

对于错误,我将值 1 分配给字段 derived_to 中的所有对象。

我现在想将此列中的所有行标记为空。我怎样才能做到这一点?这是我最近的两次迁移

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 上的第一个寄存器,这是不正确的.

感谢和抱歉我的英语不好。

【问题讨论】:

    标签: django django-models django-migrations


    【解决方案1】:

    如果我对您的理解正确,您想将所有现有的derived_to 值设置为空吗?你可以用RunPython来做到这一点

    在历史上下文中运行自定义 Python 代码。代码(和 reverse_code(如果提供)应该是接受两个的可调用对象 论据;

    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),
    ]
    

    【讨论】:

    • 很高兴能帮上忙。祝您的项目一切顺利。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2021-01-10
    • 2021-06-10
    • 2020-12-09
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    相关资源
    最近更新 更多