https://code.djangoproject.com/ticket/22837 was closed as invalid. It concerns itself with migrations being detected when model field choices (which may be dynamic) change. The workaround suggested is to pass a callable to choices with a link to
https://code.djangoproject.com/ticket/13181. However, that ticket only concerns itself with FormField.choices accepting a callable.
There are many times where dynamic choices causes unnecessary migrations to be detected, sometimes in external apps:
- pytz gains new timezone codes
- country codes are added or removed
- new states are added to an internal library
- settings determine the set of choices
I would like to reconsider reopening
https://code.djangoproject.com/ticket/22837 with the goal of making ModelField.choices accept a callable. There is sufficient frustration within the community to warrant such a change I feel.