您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django迁移添加默认具有模型功能的字段

Django迁移添加默认具有模型功能的字段

我刚刚学习了如何通过一次迁移来做到这一点!

当运行makemigrationsdjango时,应要求你设置一个认值。在这里定义所有可以使它满意的内容,最后将完成AddField你提到的迁移。

migrations.AddField(
    model_name='series',
    name='updated_as',
    field=models.DateTimeField(default=????, auto_Now=True),
),

将此操作更改为3个操作:

migrations.AddField(
    model_name='series',
    name='updated_as',
    field=models.DateTimeField(null=True, auto_Now=True),
),
migrations.RunPython(set_my_defaults, reverse_func),
migrations.AlterField(
    model_name='series',
    name='updated_as',
    field=models.DateTimeField(auto_Now=True),
),

你的函数定义为:

def set_my_defaults(apps, schema_editor):
    Series = apps.get_model('myapp', 'Series')
    for series in Series.objects.all().iterator():
        series.updated_as = datetime.Now() + timedelta(days=series.some_other_field)
        series.save()

def reverse_func(apps, schema_editor):
    pass  # code for reverting migration, if any

除了,你知道,并不可怕。考虑使用F表达式和/或数据库函数来提高大型数据库的迁移性能

Go 2022/1/1 18:17:53 有502人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶