2016-09-16 4 views
3

Команда python manage.py makemigrations сбивает большую часть времени из-за forms.py, в котором новые модели или новые поля ссылаются на уровень определения класса.Миграционные столкновения с forms.py

Поэтому я должен прокомментировать каждое такое определение для перехода на работу. Это болезненная задача.

Я не понимаю, почему процесс миграции импортирует модуль forms.py. Я думаю, что импорт модулей моделей должен быть достаточным.

Есть ли способ избежать этих ошибок?

+1

Вы не показали трассировку, но я предполагаю, что оболочка проверки Django загружает URL-адреса, что, в свою очередь, загружает представления и формы. Вы должны иметь возможность реструктурировать свою форму, чтобы избежать ошибок, но мы не можем с этим справиться, если вы не покажете код. [Этот вопрос] (http://stackoverflow.com/questions/37726396/upgrading-from-django-1-6-to-1-9-python-manage-py-migrate-failure/37747009#37747009) аналогичен. – Alasdair

+0

Спасибо @alasdair. Если миграция импортирует 'url.py', тогда я понимаю свою проблему. Я до сих пор не понимаю, почему он импортирует URL-адреса! Я удивлен, что другие люди не заявляют об этом. – albar

+1

Это проверка системы, которая импортирует URL-адреса, а не миграцию. [Команда проверяет] (https://docs.djangoproject.com/en/1.10/topics/checks/#module-django.core.checks) выполняется перед командой makemigrations. – Alasdair

ответ

1

Благодаря @alasdair я понял мою проблему и нашел обходной путь: я заменить исходный код в файле views.py

from MyApp import forms 

с

import sys 
if 'makemigrations' not in sys.argv and 'migrate' not in sys.argv: 
    from MyApp import forms 

Это отлично работает в моем случае, но я предположим, что есть лучший способ узнать, является ли текущий процесс миграцией или нет. Если да, пожалуйста, сообщите.