【发布时间】:2021-12-09 06:34:28
【问题描述】:
我有自定义迁移文件,它在表用户中创建条目。 初始工作项目具有以下迁移:
1. 001_initial.py # creates model with some fields
2. 002_custom_user_data.py # adds data in "user" due some middle requirement after some time.
现在我想在此表中再添加一列作为“config_data”。 为此,我遵循了以下步骤:
1. python manage.py makemigrations <app-name> # creates one more migration file` 003_add_config_data_field.py
2. python manage.py migrate # raise an error
迁移命令引发以下错误。
Applying my_user.001_initial.py... OK
Applying my_user.002_custom_user_data.py ...Traceback (most recent call last):
File "/home/myhome/.local/share/virtualenvs/myproject/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedColumn: column my_user.config_data does not exist
LINE 1: ..., "my_user"."address",
这是因为迁移 002 尝试访问 my_user 表之前添加字段迁移(003)被迁移到表中,这正在提高 UndefinedColumn config_data 错误。
知道如何解决这个问题,因为这些迁移应该适用于新 DB 以及更早迁移到 002 的生产 DB。
以下是 002_custom_user_data.py 的迁移
# Generated by Django 3.2.2
from django.db import migrations
from myapp.models import MyUser
def create_user(apps, schema_editor):
user = MyUser.objects.get_or_create(id=123)
user.address = 'demo'
user.save()
def delete_user(apps, schema_editor):
MyUser.objects.filter(id=123).delete()
class Migration(migrations.Migration):
dependencies = [
('my_user', '001_initial'),
]
operations = [
migrations.RunPython(create_user, delete_user, elidable=True)
]
谢谢。
【问题讨论】:
标签: python-3.x django django-migrations