我正在使用 geoDjango 运行 Django 安装,并创建了这样的模型:
#models.py
从 django.contrib.gis.db 导入模型
类路线(模型。模型):
名称 = models.CharField(max_length=100)
路径 = 模型.LineStringField(srid=4326)
对象 = 模型.GeoManager()
def __unicode__(self):
返回 str(self.path)
这行得通,我能够在终端中创建线串对象,并且诚然我从来没有让它们真正显示出来,但这更多是因为我的显示还没有完全完成。
但后来我看到了一个截屏视频,虽然是从 2008 年开始,geodjango 的创建者 - bronn,他在管理页面上获得了一个 openlayer 开放街道地图接口,我按照他的说明添加了一个带有 OSMGeoAdmin 的 admin.py,结果如下:
#admin.py
从 django.contrib.gis 导入管理员
从 myproject.georoute.models 导入路线
类 RouteAdmin(admin.OSMGeoAdmin):
search_fields = ('名字',)
admin.site.register(Route, RouteAdmin)
这也可以正常工作 - 我得到一张可以在其上绘制线串的地图,但是当我尝试保存它时 - 或者如果我已经创建了一个 Route 对象并尝试在管理页面上查看 Route 列表 - 我得到一个错误。更具体地说,“强制转换为 Unicode:需要字符串或缓冲区,找到 LineString”,据我了解,这来自于尝试对没有 __ unicode__ 函数(或类似函数)的对象进行 unicode 编码。
所以我检查了线串对象定义并且没有 unicode 函数所以我做了一个微弱的尝试添加一个,但没有运气。
所以我在这里,难住了。任何人都知道我可以如何解决这个问题?
编辑堆栈跟踪:
环境:
请求方法:POST
请求网址:http://storm.webfactional.com/admin/georoute/route/add/
Django 版本:1.2.1
Python版本:2.6.5
已安装的应用程序:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.gis',
'django.contrib.admin',
'登记',
'地理路线']
已安装的中间件:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
追溯:
get_response 中的文件“/home/storm/webapps/django/lib/python2.6/django/core/handlers/base.py”
100.响应=回调(请求,*callback_args,**callback_kwargs)
包装器中的文件“/home/storm/webapps/django/lib/python2.6/django/contrib/admin/options.py”
239. return self.admin_site.admin_view(view)(*args, **kwargs)
_wrapped_view 中的文件“/home/storm/webapps/django/lib/python2.6/django/utils/decorators.py”
76. 响应 = view_func(请求,*args,**kwargs)
_wrapped_view_func 中的文件“/home/storm/webapps/django/lib/python2.6/django/views/decorators/cache.py”
69. response = view_func(request, *args, **kwargs)
内部文件“/home/storm/webapps/django/lib/python2.6/django/contrib/admin/sites.py”
190. 返回视图(请求,*args,**kwargs)
_wrapper 中的文件“/home/storm/webapps/django/lib/python2.6/django/utils/decorators.py”
21. 返回装饰器(bound_func)(*args, **kwargs)
_wrapped_view 中的文件“/home/storm/webapps/django/lib/python2.6/django/utils/decorators.py”
76. 响应 = view_func(请求,*args,**kwargs)
bound_func 中的文件“/home/storm/webapps/django/lib/python2.6/django/utils/decorators.py”
17. 返回函数(自我,*args2,**kwargs2)
_commit_on_success 中的文件“/home/storm/webapps/django/lib/python2.6/django/db/transaction.py”
299. res = func(*args, **kw)
add_view 中的文件“/home/storm/webapps/django/lib/python2.6/django/contrib/admin/options.py”
800. self.log_addition(请求,新对象)
log_addition 中的文件“/home/storm/webapps/django/lib/python2.6/django/contrib/admin/options.py”
428. object_repr = force_unicode(对象),
force_unicode 中的文件“/home/storm/webapps/django/lib/python2.6/django/utils/encoding.py”
66. s = unicode(s)
异常类型:/admin/georoute/route/add/ 处的 TypeError
异常值:强制转换为 Unicode:需要字符串或缓冲区,找到 LineString