Reputation: 4122
Is there a straightforward clean way to drop a field from Django model? for addition of a field, migrate works perfect but its not working for deletion throwing the following error
django.db.utils.DatabaseError: (1060, "Duplicate column name 'xyz_json_old'")
Upvotes: 4
Views: 21411
Reputation: 1096
If you want to drop only the field from the model try this
$ python manage.py dbshell
You will get directly within your database shell (mysql or psql) it up to what database you are using.
$ mysql> | psql> ALTER TABLE <table_name> DROP column <COLUMN_NAME>;
Open the model too (the python file)and take off the field name from the model and type now
$ python manage.py syncdb
And it will drop the column to from table, doesn't matter if the table is already populated or not.
Upvotes: 12
Reputation: 17210
You can use South.
settings.py
and put 'south'
into INSTALLED_APPS
(assuming you’ve installed it to the right place)./manage.py syncdb
to load the South table into the database. Note that syncdb looks different now - South modifies it../manage.py convert_to_south myapp
-South will automatically make and pretend to apply your first migration.Then edit your models.py
, and then
./manage.py schemamigration --auto myapp
them migrate:
./manage.py migrate myapp
Upvotes: -1
Reputation: 4122
I am using south but still I had to go through the following with the help of my friend -
He says I must have botched up something and some internal steps in south are not atomic
Upvotes: 0