Я пытался создать миграции в существующем приложении с помощью команды makemigrations, но она выводит «Изменений не обнаружено».
Обычно я создаю новые приложения с помощью startapp
команды, но не использовал ее для этого приложения, когда создавал его.
После отладки я обнаружил, что он не создает миграцию, потому что migrations
пакет / папка отсутствует в приложении.
Было бы лучше, если он создаст папку, если ее нет или мне что-то не хватает?
python
django
django-migrations
Dilraj
источник
источник
makemigrations <myapp>
как также указал Аласдер.Ответы:
Чтобы создать начальные миграции для приложения, запустите
makemigrations
и укажите имя приложения. Папка миграции будет создана.Ваше приложение должно быть включено
INSTALLED_APPS
первым (внутри settings.py).источник
migrations
папки. Это могло произойти, если вы создали приложение вручную или обновили старую версию Django, в которой не было миграций.__init__.py
именем migrations в приложении.migrate
.Моя проблема (и ее решение) все же отличались от описанных выше.
Я не использовал
models.py
файл, а создалmodels
каталог и создал тамmy_model.py
файл, в который я поместил свою модель. Django не смог найти мою модель, поэтому он написал, что никаких миграций применять нельзя.Мое решение было: в
my_app/models/__init__.py
файле я добавил эту строку:from .my_model import MyModel
источник
Существует несколько возможных причин, по которым django не определяет, что нужно перенести во время выполнения
makemigrations
команды.INSTALLED_APPS
.dictmakemigrations -v 3
за многословие. Это может пролить свет на проблему.INSTALLED_APPS
рекомендуется указать полный путь конфигурации приложения модуля apply.apps.MyAppConfigmanage.py makemigrations --settings mysite.settings
manage.py makemigrations myapp
- это сузит количество миграций только для приложения и поможет вам изолировать проблему.модель мета проверить вы имеете право
app_label
в вашей модели метаОтладка django отладка основного скрипта django. Команда makemigrations довольно проста. Вот как это сделать в pycharm . изменить определение сценария соответствующим образом (например:
makemigrations --traceback myapp
)Несколько баз данных:
allow_syncdb
метод.источник
from recurrence.forms import RecurrenceField
а должно было бытьfrom recurrence.fields import RecurrenceField
.makemigrations
Скрипт ищет модели, которые подключены изurls.py
». Найдено здесь stackoverflow.com/questions/43093651/…python manage.py makemigrations -v 3 <app_name>
Я читал много ответов на этот вопрос, в которых часто говорилось, что нужно просто работать
makemigrations
другими способами. Но для меня проблема была вMeta
подклассе моделей.У меня есть конфигурация приложения, в которой говорится
label = <app name>
(вapps.py
файле, рядомmodels.py
иviews.py
т. Д.). Если случайно ваш мета-класс не имеет той же метки, что и метка приложения (например, из-за того, что вы разделяете одно слишком большое приложение на несколько), никаких изменений не обнаруживается (и вообще нет полезного сообщения об ошибке). Итак, в моем модельном классе теперь есть:Здесь запускаем Django 1.10.
источник
Это комментарий, но, вероятно, это должен быть ответ.
Убедитесь, что имя вашего приложения находится в settings.py,
INSTALLED_APPS
иначе, что бы вы ни делали, миграции не будут выполняться.Затем запустите:
источник
У меня была другая проблема, не описанная здесь, которая сводила меня с ума.
У меня была завершающая ',' в одной строке, возможно, от копирования и вставки. Строка с is_dumb не создает миграцию модели с помощью './manage.py makemigrations', но также не выдает ошибку. После удаления "," все заработало, как ожидалось.
Так что будьте осторожны при копировании и вставке :-)
источник
is_dumb
равен(models.BooleanField(default=False), )
whichmakemigrations
не знает, как преобразовать в столбец базы данных.Иногда
./manage.py makemigrations
бывает лучше,./manage.py makemigrations <myapp>
потому что он может обрабатывать определенные конфликты между приложениями.Эти случаи происходят тихо, и требуется несколько часов,
swearing
чтобы понять истинный смысл страшногоNo changes detected
сообщения.Следовательно, гораздо лучше использовать следующую команду:
./manage.py makemigrations <myapp1> <myapp2> ... <myappN>
источник
Я скопировал таблицу из-за пределов django, и для класса Meta по умолчанию установлено значение «managed = false». Например:
После изменения manged на True, makemigrations начал принимать изменения.
источник
источник
Я решил эту проблему следующим образом:
источник
Я забыл привести правильные аргументы:
в models.py, а затем он начал сбрасывать этот надоедливый
В приложении myApp изменений не обнаружено
источник
Другая возможная причина заключается в том, что у вас были определенные модели в другом файле (не в пакете), и вы не ссылались на них в другом месте.
Для меня простое добавление
from .graph_model import *
вadmin.py
(гдеgraph_model.py
был новый файл) решило проблему.источник
Моя проблема была намного проще, чем приведенные выше ответы, и, вероятно, гораздо более распространенная причина, если ваш проект уже настроен и работает. В одном из моих приложений, которое долгое время работало, миграции казались неудобными, поэтому в спешке я сделал следующее:
Whaat ??
Я также по ошибке удалил все
__init__.py
файлы :( - Все снова заработало после того, как я вошел и:Затем для каждого из моих приложений
makemigrations
снова заработало.Оказывается, я вручную создал новое приложение, скопировав другое, и забыл поместить его
__init__.py
вmigrations
папку, и это убедило меня в том, что все было шатко, что привело к тому, что я усугубил ситуацию,rm -r
как описано выше.Надеюсь, это поможет кому-нибудь в течение нескольких часов ругать ошибку «Изменений не обнаружено».
источник
Решение в том, что вы должны включить свое приложение в INSTALLED_APPS.
Я пропустил это и обнаружил ту же проблему.
после указания имени моего приложения миграция прошла успешно
обратите внимание, я упомянул доски в последнем, это мое имя приложения.
источник
INSTALLED_APPS = [
]
убедитесь, что 'blog.apps.BlogConfig' (он включен в ваш settings.py, чтобы выполнить миграцию вашего приложения)
затем запустите блог python3 manage.py makemigrations или имя вашего приложения
источник
У вас тоже может возникнуть очень глупая проблема - определить два
class Meta
в вашей модели. В этом случае любые изменения первого не будут применены при запускеmakemigrations
.источник
Я знаю, что это старый вопрос, но я боролся с этой же проблемой весь день, и мое решение было простым.
Моя структура каталогов была примерно такой:
И поскольку все другие модели, вплоть до той, с которой у меня возникла проблема, импортировались куда-то еще, и в конечном итоге импорт из
main_app
которой был зарегистрирован вINSTALLED_APPS
, мне просто повезло, что все они работали.Но так как я только добавил друг
app
кINSTALLED_APPS
и неapp_sub*
когда я , наконец , добавили новые модели файл , который не был импортирован в другом месте, Django полностью игнорировали его.Мое исправление заключалось в добавлении
models.py
файла в базовый каталог каждого изapp
таких ...а потом добавить
from apps.app.app_sub1 import *
и так далее на каждыйapp
уровеньmodels.py
файлов .Блех ... это заняло у меня ТАКОЕ много времени, чтобы понять, и я нигде не мог найти решение ... Я даже перешел на страницу 2 результатов Google.
Надеюсь, это кому-то поможет!
источник
Еще один крайний случай и решение:
Я добавил логическое поле, и в то же время добавил ссылающееся на него @property с тем же именем (doh). Прокомментировал свойство, и миграция видит и добавляет новое поле. Переименовали собственность и все хорошо.
источник
У меня была аналогичная проблема с django 3.0, согласно разделу миграции в официальной документации , запуска этого было достаточно, чтобы обновить структуру моей таблицы:
Но результат всегда был одним и тем же: «никаких изменений не обнаружено» в моих моделях после того, как я выполнил скрипт makemigrations. У меня была синтаксическая ошибка в models.py в модели, которую я хотел обновить в db:
вместо того:
Решив эту глупую ошибку, с помощью этой команды миграция прошла без проблем. Может это кому-то поможет.
источник
Вы должны добавить
polls.apps.PollsConfig
кINSTALLED_APPS
вsetting.py
источник
В моем случае я забыл вставить аргументы класса
Неправильно:
Верный
источник
В моем случае я сначала добавил поле в модель, и Django сказал, что изменений нет.
Затем я решил изменить "имя таблицы" модели, makemigrations работал. Затем я изменил имя таблицы на значение по умолчанию, и новое поле также появилось.
В системе миграции django есть «ошибка», иногда она не видит новое поле. Может быть связано с полем даты.
источник
Возможной причиной может быть удаление существующего файла db и папки миграции, вы можете использовать python,
manage.py makemigrations <app_name>
это должно сработать. Однажды я столкнулся с подобной проблемой.источник
Если у вас есть
managed = True
встроенная модель Meta, вам необходимо удалить ее и выполнить миграцию. Затем снова запустите миграцию, она обнаружит новые обновления.источник
При добавлении новых моделей в приложение django api и запуске
python manage.py makemigrations
инструмента никаких новых моделей не обнаружено.Странно было то, что старые модели действительно выбирались
makemigrations
, но это было потому, что на них ссылались вurlpatterns
цепочке, и инструмент каким-то образом их обнаруживал. Так что следите за своим поведением.Проблема заключалась в том, что в структуре каталогов, соответствующей пакету моделей, были подпакеты, а все
__init__.py
файлы были пустыми. Они должны явно импортировать все необходимые классы в каждую подпапку и в модели,__init__.py
чтобы Django мог их подобрать с помощьюmakemigrations
инструмента.источник
Попробуйте зарегистрировать свою модель в admin.py, вот пример: - admin.site.register (YourModelHere)
Вы можете сделать следующее: - 1. admin.site.register (YourModelHere) # В admin.py 2. Перезагрузить страницу и повторить попытку 3. Нажать CTRL-S и сохранить 4. Может быть ошибка, специально проверьте модели .py и admin.py 5. Или, в конце концов, просто перезапустите сервер
источник
Надеюсь, это может помочь кому-то другому, так как в конце концов я потратил часы, пытаясь разобраться с этим.
Если в вашей модели есть функция с таким же именем, это приведет к удалению значения. Оглядываясь назад, довольно очевидно, но тем не менее.
Итак, если у вас есть что-то вроде этого:
В этом случае функция переопределит настройку выше, сделав ее «невидимой» для
makemigrations
.источник
Лучшее, что вы можете сделать, это удалить существующую базу данных. В моем случае я использовал базу данных phpMyAdmin SQL, поэтому я вручную удаляю созданную базу данных там.
После удаления: я создаю базу данных в PhpMyAdmin и не добавляю никаких таблиц.
Снова запустите следующие команды:
python manage.py makemigrations
python manage.py migrate
После этих команд : вы можете видеть, что django автоматически создал другие необходимые таблицы в базе данных (примерно 10 таблиц).
python manage.py makemigrations <app_name>
python manage.py migrate
И наконец: после выполнения вышеуказанных команд вся созданная вами модель (таблица) будет напрямую импортирована в базу данных.
Надеюсь, это поможет.
источник
Моя проблема с этой ошибкой заключалась в том, что я включил:
Внутренняя модель, которую я хотел создать, мигрировала.
источник
У меня возникла другая проблема при создании нового приложения под названием
deals
. Я хотел разделить модели внутри этого приложения, поэтому у меня было 2 файла моделей с именамиdeals.py
иdealers.py
. При работеpython manage.py makemigrations
я получил:No changes detected
.Я пошел дальше и внутри,
__init__.py
который живет в том же каталоге, где жили мои файлы модели (сделки и дилер), я сделалИ тогда
makemigrations
команда сработала.Оказывается, если вы никуда не импортируете модели ИЛИ имя файла ваших моделей не
models.py
указано, то модели не будут обнаружены.Еще одна проблема, которая случилась со мной, - это то, как я написал приложение на
settings.py
:Я имел:
Он должен был включать корневую папку проекта:
источник