Джанго: 1,3; PyCharm: 1.5.3
Я пишу юнит-тесты для приложения Django, которое использует GEOS для сохранения объектов Point. Для локального тестирования я следовал за каждым шагом в настройке серверной части Spatialite в соответствии с документацией GeoDjango.
Я сталкивался с GEOS_ERROR (GEOS_ERROR: геометрия должна быть Point или LineString) всякий раз, когда я пытался создать и сохранить экземпляр модели с объектом Point. Было ясно, что объект Point действительно был передан в функцию get_or_create для модели. И эту же модель можно без проблем сохранить в оболочке.
Не вдаваясь в код, вызвавший эту ошибку, я обнаружил, что каждый раз, когда я запускаю модульный тест, Django импортирует настройки, создает тестовую базу данных и немедленно уничтожает ее, а затем снова создает тестовую базу данных для тесты, которые в конечном итоге будут выдавать ошибки.
Testing started at 5:09 PM ...<br />
Importing Django settings module settings
SpatiaLite version ..: 2.4.0 Supported Extensions:
- 'VirtualShape' [direct Shapefile access]
- 'VirtualText'[direct CSV/TXT access]
- 'VirtualNetwork [Dijkstra shortest path]
- 'RTree' [Spatial Index - R*Tree]
- 'MbrCache' [Spatial Index - MBR cache]
- 'VirtualFDO' [FDO-OGR interoperability]
- 'SpatiaLite' [Spatial SQL - OGC]
PROJ.4 Rel. 4.7.1, 23 September 2009
GEOS version 3.3.0-CAPI-1.7.0Creating test database 'default'...
Destroying old test database 'default'...
SpatiaLite version ..: 2.4.0 Supported Extensions:
(same Spatialite settings again)
cannot start a transaction within a transaction
cannot rollback transaction - SQL statements in progress
Syncing...
Creating tables ...
Я подозревал, что это было вызвано PyCharm. Но когда я запускаю 'python manage.py test' из оболочки терминала, тот же процесс повторяется и выдают те же ошибки.
Я проверил свой файл настроек, но не смог выяснить, почему он дважды запрашивает импорт и почему дважды создавалась тестовая база данных. Требуемый init_spatialite-2. *. Sql для создания базы данных Spatialite также находится в пути проекта.
Любой совет будет высоко оценен!
Обновление :
JetBrains сообщил мне, что двойной импорт файла settings.py во время работы runserver можно исправить с помощью этого патча или runserver --noreload.
http://code.djangoproject.com/changeset/15911
Однако ошибка импорта все еще сохраняется для тестовых заданий.