我无法为我的GeoDjango项目运行“./manage.py evolve --hint --execute”。它以错误退出:
File "/home/viktor/.virtualenvs/senv/lib/python2.6/site-packages/django_evolution-0.6.7-py2.6.egg/django_evolution/db/__init__.py", line 18, in __init__
module = __import__('.'.join(module_name),{},{},[''])
ImportError: No module named django.contrib.gis.db.backends.postgis
这是突变提示:
from django_evolution.mutations import AddField, DeleteField
from django.contrib.gis.db.models.fields import PointField
MUTATIONS = [
AddField('Geodata', 'position_real', PointField, initial=<<USER VALUE REQUIRED>>),
AddField('Geodata', 'position', PointField, initial=<<USER VALUE REQUIRED>>),
DeleteField('Geodata', 'real_lat'),
DeleteField('Geodata', 'lat'),
DeleteField('Geodata', 'lng'),
DeleteField('Geodata', 'real_lng')
]
#----------------------
Trial evolution successful.
但是,使用* backends.postgis数据库引擎可以很好地运行Web应用程序。它似乎只是一个django-evolution问题。
任何想法如何让进化发挥作用? 感谢。
答案 0 :(得分:0)
我只是在DATABASE_ENGINE = "postgresql"
中添加了settings.py
来解决这个问题。
查看在site-packages/django_evolution-0.6.0-py2.7.egg/tests/utils.py
中使用此变量的代码(您的路径可能略有不同),utils.py
将根据数据库调用django_evolution-0.6.0-py2.7.egg/django_evolution/db
中的一个文件。然后查看db目录中的postgresql.py
文件,它似乎是一个简短的脚本,它针对您的数据库实现运行一些基本测试。由于postgis后端不太可能与开箱即用的postgres显着不同,我相信使用postgresql作为DATABASE_ENGINE
值是安全的。