Невозможно вызвать django.apps.apps.get_models()
с верхнего уровня модуля models
, так как реестр модели в настоящее время заполняется. Это создаст бесконечную рекурсию.
Кроме того, варианты, определенные на уровне модели, замирают при миграциях, поэтому каждый раз, когда список ваших моделей изменяется, вам потребуется миграция.
И, наконец, вы, возможно, захотите разобраться со случаем «устаревших» моделей - если вы удалите модель из своего проекта, записи, указывающие на нее, больше не будут проверяться.
Я также отмечаючтобы вы начали свой вопрос с
Я хочу раскрывающийся список всех моделей в моей программе.
Так что, похоже, это больше для целей пользовательского интерфейса?
В любом случае: простое решение состоит в том, чтобы исключить аргумент choices
из ваших моделей и указать его только в той форме, в которой вам нужен выбор этих моделей. Вы также можете использовать каноническое app_label.model_name
в качестве действующего значения и использовать только подробное имя для отображения (если только вам не нужны неиспользуемые данные).