About Choices for Model Fields

For a model field with choices defined dynamically in the settings, file system, or some API, you cannot use the choices attribute of the model field itself.

Instead, you must create a model form and use the choices attribute for the form field.

The reason is that choices in the model are reflected in the migrations, so each change in the dynamic source would cause the creation of new migration. That is not very feasible for reusable apps.

Tips and Tricks Programming Architecture Django 4.2 Django 3.2 Django 2.2