Django migrations - change model from Int to CharField and pre-populate from choice option
<p>In a model, I have an <code>IntegerField</code> that is mapped to a <code>CHOICES</code> tuple.  The requirements for that field have changed to the point that updating the options in that tuple will require too frequent maintenance, so I've decided to alter it to a <code>CharField</code></p>

<p>Is there a way I can do this inside the migrations, or would it be better to create a new column, update with the appropriate value and delete old column?</p>

<p>You've changed your Schema so you'll definitely need a Schema migration and Django will do that for you, with the <code>makemigrations</code> command.</p>

<p>But since you're also changing the type of a column, in which is filled with integers and now should be cast to characters, Django won't do that automatically for you and you need to write <a href="https://docs.djangoproject.com/en/1.10/topics/migrations/#data-migrations" rel="nofollow">Data migrations</a>.</p>

<p>In my experience, it's better to generate multiple migrations; one that creates a new CharField and then write to this new column via RunPython. Then, run a second migration that removes the original IntegerField and renames the new CharField column as your original column. (I guess it's what you yourself suggested)</p>

python django django-migrations