#26488: migrate crashes when renaming a multi-table inheritance base model
-------------------------------------+-------------------------------------
Reporter: Christopher | Owner: nobody
Neugebauer |
Type: Bug | Status: new
Component: Migrations | Version: 1.9
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Christopher Neugebauer):
So here's something fun. Here's how you *can* create a model with a base
class whose name you can change, and Migrations will be happy.
1. Create a model `SubModel`, it must derive from `models.Model`.
2. Create a new base class, `BaseModel`, it must derive from
`models.Model`
3. Add: `basemodel_ptr = OneToOneField(BaseModel, null=True)` on
`SubModel`. The field *must* be named like the class name of the new base
class.
4. Automatically create a migration
5. Create a data migration that creates a new `BaseModel(id=submodel.id)`
for each `SubModel` instance. This step is only necessary if you have
created `SubModel` objects. Otherwise, just use an automatic default.
6. Set the base model of `SubModel` to `BaseModel`
7. Automatically create a migration
8. Rename `BaseModel` to `RenamedBaseModel`
9. Automatically create a migration, accepting the two automatic
suggestions
10. Migrate!
At this point, you can see that `RenamedBaseModel` works as expected. It
appears as though everything here works, as long as you aren't tracking
the base class when migrations first creates the model.
--
Ticket URL: <https://code.djangoproject.com/ticket/26488#comment:8>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/066.5b432550b6fca384899f33dbbe43687c%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.