我正在使用 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