Как изменить имена полей модели между собой в Django?
Я создал модель в своем проекте Django. По ошибке я задал поля date_created
и date_updated
неправильно следующим образом:
class Article(models.Model):
date_created = models.DateTimeField(auto_now=True)
date_updated = models.DateTimeField(auto_now_add=True)
Я должен был установить date_created как auto_now_add=True
, а date_updated как auto_now=True
. Теперь, когда я хочу изменить имена моделей друг на друга, как
class Article(models.Model):
date_updated = models.DateTimeField(auto_now=True)
date_created = models.DateTimeField(auto_now_add=True)
Django обнаруживает, что я только что изменил определение полей, и создает миграцию как
operations = [
migrations.AlterField(
model_name='article',
name='date_created',
field=models.DateTimeField(auto_now_add=True),
),
migrations.AlterField(
model_name='article',
name='date_updated',
field=models.DateTimeField(auto_now=True),
),
]
Но на самом деле я переименовал их. Когда я вручную устанавливаю миграции как RenameField
, это просто не работает, потому что Django обнаруживает, что я не создал миграцию для изменений, которые я сделал.
Переименование с другим именем может быть решением, но мне нужно сохранить имена полей. Что я могу сделать в этой ситуации?
Отредактируйте файл миграции с тремя переименованиями:
operations = [
migrations.RenameField(
model_name='article',
old_name='date_created',
name='date_updated1',
),
migrations.RenameField(
model_name='article',
old_name='date_updated',
name='date_created',
),
migrations.RenameField(
model_name='article',
old_name='date_updated1',
name='date_updated',
),
]
Таким образом, в конечном итоге два поля поменяются местами.