Opened 9 years ago
Closed 9 years ago
#26586 closed Bug (wontfix)
makemigrations does not detect custom field subclassing change
Reported by: | Phil Krylov | Owned by: | Baylee Feore |
---|---|---|---|
Component: | Migrations | Version: | 1.9 |
Severity: | Normal | Keywords: | migrations, custom fields |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Example:
class MyLongTextField(models.CharField): def __init__(self, *args, **kwargs): kwargs["max_length"] = 2000 super(MyLongTextField, self).__init__(*args, **kwargs)
After changing this to
class MyLongTextField(models.TextField): def __init__(self, *args, **kwargs): kwargs["max_length"] = 2000 super(MyLongTextField, self).__init__(*args, **kwargs)
manage.py makemigrations detects no changes.
Change History (6)
comment:1 by , 9 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:2 by , 9 years ago
I think that expected behaviour is to generate an ALTER TABLE table_name ALTER COLUMN column_name TYPE TEXT
migration operation. However, I'm not familiar enough with migration internals to predict what it takes to detect a change like this.
comment:3 by , 9 years ago
Description: | modified (diff) |
---|
comment:4 by , 9 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:5 by , 9 years ago
After discussion with Markus at PyCon sprints 2016:
This isn't possible. The closest we get is here, where we could add a check for get_internal_type()
of the two fields. But that won't work because the old state and new state are dynamically generated from the field definition in the migration files. The only way to handle this would be if we saved internal type as part of the migrations.
Propose closing this in favor of adding documentation in #26702
comment:6 by , 9 years ago
Resolution: | → wontfix |
---|---|
Status: | assigned → closed |
For future reference, it would probably be fine to reclassify this ticket as a documentation issue, but since you've already created another issue, I'll close this.
I'm not sure how to handle this.