Проблема в том, что django выполняет каждую строку написанного кода, даже когда вы вызываете python manage.py makemigrations . Это означает, что до того, как django фактически отражает изменения в базе данных, он выполняет весь проект, а когда дело доходит до строки кеширования, он пытается получить все строки из текстовой таблицы, в которой еще нет столбца фиктивный , но из django таблица перспективы (в коде) Text имеет фиктивный столбец, поэтому выдает ошибку.
Решение Обходной путь - установить флаг, скажем, в settings.py
IS_RUNNING = False
и в manage.py добавьте следующее
from app import settings
if 'runserver' in sys.argv:
settings.IS_RUNNING = True
и поместите код кеша после проверки флага
if settings.IS_RUNNING:
cached_languages = models.Text.objects.all()
тогда django не будет пытаться получить записи, пока выполняя миграции перед их применением. Алгоритм кеширования будет выполняться только тогда, когда вы действительно вызываете runserver.