큰 Django 프로젝트를 버전 1.7로 마이그레이션하려고합니다.Django 1.7 : 모델에서 빌드 된 테스트 및 URL 패턴이 "해당 테이블이 없습니다."
나는 모든 문제를 해결했으며 웹 사이트는 원활하게 작동하지만 더 이상 테스트 슈트를 실행할 수 없습니다.
populate
메서드 중에 Django의 앱 레지스트리에서 문제가 발생합니다. url 패턴이 ORM을 초기 단계에서 사용하는 몇 가지 응용 프로그램이 있습니다. 예를 들어
:
url(r'^(?:(?P<platform_slug>%s)/)?(?:(?P<genre_slug>%s)/)?(?:(?P<year>%s)/)?$' % (
r'|'.join([i['slug'] for i in Platform.active_objects.values("slug")]),
r'|'.join([i['slug'] for i in Genre.objects.values("slug")]),
r'|'.join([str(i) for i in YEAR_FILTER_RANGE])),
views.archive, name="gamecard_archive")
그것은 선택 사항이지만 구별 매개 변수를 허용하는 복잡한 패턴이지만,이 문제와 관련이 없습니다입니다.
테스트를 실행할 때 테스트 러너가 여전히 해당 단계에서 데이터베이스를 만들지 않았기 때문에 악명 높은 django.db.utils.OperationalError: no such table: contrib_platform
가 발생했습니다. 전체 테스트 설정이 실행되는 순서는 1.6과 분명히 다릅니다. 하나 개의 솔루션은 사람이 더 우아한 가지고 올 경우 간단한 버전이
if 'test' in sys.argv:
[simple url pattern here]
else:
[uber url pattern here]
궁금 같이 sys.argv
을 확인 이러한 규칙을 대체하여 시험 중에 URL 구성에서 응용 프로그램 모델에 접근하지 않도록 할 수
동안 휴대용 솔루션.
업데이트 추적 스택의 헤드를 추가하려고 생각했습니다.
실제로 테스트와 관련이 없지만 앱 구성과 관련이 있음을 보여줍니다.
Django 1.7이 잠시 동안 사용 되었기 때문에 회귀라고 말할 수는 없지만 전에 아무도 발견하지 못했습니다. 내 프로젝트의 한 코너 케이스. 그러나 Django 1.6에서는 매력처럼 작동하기 때문에 초기 단계에서 데이터베이스에 액세스 할 수 있습니다.
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "[...]/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "[...]/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
django.setup()
File "[...]/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Users/germanoguerrini/.virtualenvs/multi17/lib/python2.7/site-packages/django/apps/registry.py", line 115, in populate
app_config.ready()
File "[...]/lib/python2.7/site-packages/django/contrib/admin/apps.py", line 22, in ready
self.module.autodiscover()
File "[...]/lib/python2.7/site-packages/django/contrib/admin/__init__.py", line 23, in autodiscover
autodiscover_modules('admin', register_to=site)
File "[...]/lib/python2.7/site-packages/django/utils/module_loading.py", line 74, in autodiscover_modules
import_module('%s.%s' % (app_config.name, module_to_search))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
...
추적 표시에 줄을 추가하십시오. 데이터베이스 테이블에 의해 지정된 URL 구성을 가진 솔루션은 간단한 앱에서 Django 1.7과 작동합니다. 어쩌면 복잡한 종속성이나주기적인 가져 오기가있을 수 있습니다. – hynekcer