Django ModelField 在添加新字段时基于同一模型中的另一个字段添加默认值
Django ModelField Add default to based on another field in same model while adding a new field
我有这个字段,
job_created = models.DateTimeField(auto_now_add=True)
现在我想添加类似这样的东西,如何将默认设置基于 post_created 本身。我希望第一个 last_modified 是创建工作时,我想要
last_modified = models.DateTimeField(auto_now=True, default = post_created)
或者如果我在 运行 迁移时提供一个默认值,该怎么做?
基本上你不能,但你可以创建一个 data migration
def set_last_modified(apps, schema_editor):
MyModel = apps.get_model('myapp', 'MyModel')
for obj in MyModel.objects.all():
obj.last_modified = obj.post_created
obj.save()
class Migration(migrations.Migration):
dependencies = [
('myapp', 'previous_migration'),
]
operations = [
# Doesn't need to do anything in reverse, models have not been changed
migrations.RunPython(set_last_modified, migrations.RunPython.noop)
]
您应该通过 运行
获取此迁移的模板
migrations --empty yourappname
我有这个字段,
job_created = models.DateTimeField(auto_now_add=True)
现在我想添加类似这样的东西,如何将默认设置基于 post_created 本身。我希望第一个 last_modified 是创建工作时,我想要
last_modified = models.DateTimeField(auto_now=True, default = post_created)
或者如果我在 运行 迁移时提供一个默认值,该怎么做?
基本上你不能,但你可以创建一个 data migration
def set_last_modified(apps, schema_editor):
MyModel = apps.get_model('myapp', 'MyModel')
for obj in MyModel.objects.all():
obj.last_modified = obj.post_created
obj.save()
class Migration(migrations.Migration):
dependencies = [
('myapp', 'previous_migration'),
]
operations = [
# Doesn't need to do anything in reverse, models have not been changed
migrations.RunPython(set_last_modified, migrations.RunPython.noop)
]
您应该通过 运行
获取此迁移的模板migrations --empty yourappname