Opened 9 years ago
Closed 8 years ago
#26114 closed Bug (fixed)
Removing Meta.db_table generates migration with wrong rename in comment (None)
Reported by: | Daniel | Owned by: | PREMANAND |
---|---|---|---|
Component: | Migrations | Version: | 1.9 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
# myapp.models.py #Old model class MyModel(models.Model): ... class Meta: db_table = 'legacy_table' #New model class MyModel(models.Model): ... # makemigrations output: - Rename table for mymodel to None # sqlmigrate output: BEGIN; -- -- Rename table for mymodel to None -- RENAME TABLE `legacy_table` TO `myapp_mymodel`; COMMIT;
Change History (7)
comment:1 by , 9 years ago
Summary: | Removing Meta.db_table generates migration with wrong rename (None) → Removing Meta.db_table generates migration with wrong rename in comment (None) |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 8 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:3 by , 8 years ago
I'm thinking the following, please review and provide your comments.
When someone provides "None" as the new table name, we won't detect that as a change and just ignore it.
This is the new change that works.
if old_db_table_name != new_db_table_name and new_db_table_name != None: self.add_operation( app_label, operations.AlterModelTable( name=model_name, table=new_db_table_name, ) )
We don't have the same problem in the initial creation of the table if the table name is "None". It defaults to the app name as normal.
comment:4 by , 8 years ago
The change I proposed in comment 1 is about modifying AlterModelTable.describe()
. The autodetector shouldn't be changed like that because then a migration changing the table name back to the default wouldn't be created.
comment:6 by , 8 years ago
Has patch: | set |
---|
I think we don't have the needed information to put the actual name in the comment, but perhaps we could replace
None
with something like(default)
.