I am having some trouble figuring out the best way to remove model fields 
in Django. If I remove a field from a model and then run makemigrations, it 
creates a RemoveField operation in a migration. That is great, but if I 
decide to run the migration before releasing the new code, the existing 
code will break (for a short time between running the migration and 
releasing the new code) because the old code is still querying for the 
removed column (Django queries for all columns by default). I could run the 
migration after the release, but that won't work if I also have an AddField 
operation because the new code needs the new column, so it needs to be run 
before. I am wondering if anyone has solved this issue?

My best solution (I don't think Django supports this) would be to have a 
special type of field called a DeprecatedField. It would delete the field 
from Django's perspective, but keep the column in the DB. Django would no 
longer query for the column, but the column would still be in the DB. On 
the next release, I could remove the column completely (with a RemoveField 
operation) and the existing code would not error because it has no 
knowledge of the column.

I noticed Django has an idea of a private field, which is on a model but 
not in the DB. Is there a way to create a field that is in the DB, but 
Django model doesn't query for it or allow it to be used in creates and 
updates? Very similar to the managed=False on the Model, but on the Field 
level. If anyone has other approaches to the problem, I would be very 
excited to find alternative methods.

Thanks,
Taylor

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/a52ae01a-1a7d-43ce-a94f-fb00c4e1b7d1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to