Django ModelField добавить значение по умолчанию на основе другого поля в той же модели при добавлении нового поля
У меня есть это поле,
job_created = models.DateTimeField(auto_now_add=True)
Теперь я хочу добавить что-то вроде этого, как основать значение по умолчанию на post_created. Я хочу, чтобы первый last_modified был при создании задания, я хочу что-то вроде
last_modified = models.DateTimeField(auto_now=True, default = post_created)
Или если я предоставляю один дефолт во время выполнения миграции, как это сделать?
1 ответ:
По существу, вы не можете, но вы можете просто создать миграцию данных
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