geoDjango-强制使用Unicode:需要字符串或缓冲区,找到LineString

geoDjango-强制使用Unicode:需要字符串或缓冲区,找到LineString,django,geodjango,Django,Geodjango,我正在使用geoDjango运行Django安装,并创建了如下模型: #models.py from django.contrib.gis.db import models class Route(models.Model): name = models.CharField(max_length=100) path = models.LineStringField(srid=4326) objects = models.GeoManager() def __

我正在使用geoDjango运行Django安装,并创建了如下模型:

#models.py from django.contrib.gis.db import models class Route(models.Model): name = models.CharField(max_length=100) path = models.LineStringField(srid=4326) objects = models.GeoManager() def __unicode__(self): return str(self.path) #admin.py from django.contrib.gis import admin from myproject.georoute.models import Route class RouteAdmin(admin.OSMGeoAdmin): search_fields = ('name',) admin.site.register(Route, RouteAdmin) #models.py 从django.contrib.gis.db导入模型 课程路线(models.Model): name=models.CharField(最大长度=100) path=models.LineStringField(srid=4326) objects=models.GeoManager() def ___; unicode(自): 返回str(self.path) 这是可行的,我能够在终端中创建linestring对象,并且承认我从未让它们真正显示出来,但这更多是因为我的显示还没有完全完成

但是后来我看到了一个屏幕,虽然是从2008年开始的,geodjango的创建者-bronn,他在管理页面上获得了一个openlayer open street map界面,我按照他的指示添加了一个admin.py和一个OSMGeoAdmin,结果如下:

#models.py from django.contrib.gis.db import models class Route(models.Model): name = models.CharField(max_length=100) path = models.LineStringField(srid=4326) objects = models.GeoManager() def __unicode__(self): return str(self.path) #admin.py from django.contrib.gis import admin from myproject.georoute.models import Route class RouteAdmin(admin.OSMGeoAdmin): search_fields = ('name',) admin.site.register(Route, RouteAdmin) #管理员 从django.contrib.gis导入管理 从myproject.georoute.models导入路由 类RouteAdmin(admin.OSMGeoAdmin): 搜索_字段=('name',) 管理站点注册(路由,路由最小值) 这也很好——我得到了一个可以在上面绘制线字符串的地图,但是当我试图保存它时——或者如果我已经创建了一个路由对象并试图在adminpage上查看路由列表——我会得到一个错误。更具体地说,“强制使用Unicode:needstring或buffer,LineString-found”,根据我的理解,这来自于尝试对一个没有_u; Unicode _;函数(或类似函数)的对象进行Unicode编码

所以我检查了linestring对象定义,但没有unicode函数,所以我尝试添加一个,但没有成功

所以我来了,被难住了。有人知道我如何解决这个问题吗

编辑 堆栈跟踪:

Environment: Request Method: POST Request URL: http://storm.webfactional.com/admin/georoute/route/add/ Django Version: 1.2.1 Python Version: 2.6.5 Installed Applications: ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.gis', 'django.contrib.admin', 'registration', 'georoute'] Installed Middleware: ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware') Traceback: File "/home/storm/webapps/django/lib/python2.6/django/core/handlers/base.py" in get_response 100. response = callback(request, *callback_args, **callback_kwargs) File "/home/storm/webapps/django/lib/python2.6/django/contrib/admin/options.py" in wrapper 239. return self.admin_site.admin_view(view)(*args, **kwargs) File "/home/storm/webapps/django/lib/python2.6/django/utils/decorators.py" in _wrapped_view 76. response = view_func(request, *args, **kwargs) File "/home/storm/webapps/django/lib/python2.6/django/views/decorators/cache.py" in _wrapped_view_func 69. response = view_func(request, *args, **kwargs) File "/home/storm/webapps/django/lib/python2.6/django/contrib/admin/sites.py" in inner 190. return view(request, *args, **kwargs) File "/home/storm/webapps/django/lib/python2.6/django/utils/decorators.py" in _wrapper 21. return decorator(bound_func)(*args, **kwargs) File "/home/storm/webapps/django/lib/python2.6/django/utils/decorators.py" in _wrapped_view 76. response = view_func(request, *args, **kwargs) File "/home/storm/webapps/django/lib/python2.6/django/utils/decorators.py" in bound_func 17. return func(self, *args2, **kwargs2) File "/home/storm/webapps/django/lib/python2.6/django/db/transaction.py" in _commit_on_success 299. res = func(*args, **kw) File "/home/storm/webapps/django/lib/python2.6/django/contrib/admin/options.py" in add_view 800. self.log_addition(request, new_object) File "/home/storm/webapps/django/lib/python2.6/django/contrib/admin/options.py" in log_addition 428. object_repr = force_unicode(object), File "/home/storm/webapps/django/lib/python2.6/django/utils/encoding.py" in force_unicode 66. s = unicode(s) Exception Type: TypeError at /admin/georoute/route/add/ Exception Value: coercing to Unicode: need string or buffer, LineString found 环境: 申请方式:邮寄 请求URL: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”, “注册”, “georoute”] 已安装的中间件: ('django.middleware.common.CommonMiddleware', “django.contrib.sessions.middleware.SessionMiddleware”, “django.middleware.csrf.CsrfViewMiddleware”, 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware') 回溯: get_响应中的文件“/home/storm/webapps/django/lib/python2.6/django/core/handlers/base.py” 100响应=回调(请求,*回调参数,**回调参数) 包装器中的文件“/home/storm/webapps/django/lib/python2.6/django/contrib/admin/options.py” 239返回self.admin\u site.admin\u视图(视图)(*args,**kwargs) 视图中的文件“/home/storm/webapps/django/lib/python2.6/django/utils/decorators.py” 76响应=查看功能(请求,*args,**kwargs) 文件“/home/storm/webapps/django/lib/python2.6/django/views/decorators/cache.py” 69响应=查看功能(请求,*args,**kwargs) 文件“/home/storm/webapps/django/lib/python2.6/django/contrib/admin/sites.py” 190返回视图(请求、*args、**kwargs) 包装器中的文件“/home/storm/webapps/django/lib/python2.6/django/utils/decorators.py” 21返回装饰符(绑定函数)(*args,**kwargs) 视图中的文件“/home/storm/webapps/django/lib/python2.6/django/utils/decorators.py” 76响应=查看功能(请求,*args,**kwargs) 绑定函数中的文件“/home/storm/webapps/django/lib/python2.6/django/utils/decorators.py” 17返回函数(self,*args2,**kwargs2) 文件“/home/storm/webapps/django/lib/python2.6/django/db/transaction.py”在成功提交时 299res=func(*参数,**kw) 添加视图中的文件“/home/storm/webapps/django/lib/python2.6/django/contrib/admin/options.py” 800self.log\u添加(请求、新\u对象) 日志中的文件“/home/storm/webapps/django/lib/python2.6/django/contrib/admin/options.py” 428object_repr=force_unicode(对象), 强制unicode格式的文件“/home/storm/webapps/django/lib/python2.6/django/utils/encoding.py” 66s=unicode(s) 异常类型:TypeError位于/admin/georoute/route/add/ 异常值:强制为Unicode:需要字符串或缓冲区,找到LineString
我可以通过以下方式复制堆栈跟踪:

from django.contrib.gis.db import Models
# model from the tutorial
class WorldBorders(models.Model):
    #name = models.CharField(max_length=50)
    name = models.LineStringField(srid=4326)
    ...
    def __unicode__(self):
        return self.name
我加载了管理员页面,其中
name
定义为
CharField
,然后将模型定义更改为
LineStringField
。当我保存页面时,我得到了相同的错误


因此,我怀疑这是一个数据问题—您的模型定义是否与数据库中的列定义匹配?您可以尝试删除该表并再次运行
manage.py syncdb

无需寻找其他方法,赛斯是个好人

defunicode函数需要一个字符串。因此,您必须在“return”部分中放置一个字符类型的字段

这应该起作用:

from django.contrib.gis.db import Models
# model from the tutorial
class WorldBorders(models.Model):
    name = models.CharField(max_length=50)
    path = models.LineStringField(srid=4326)
    ...
    def __unicode__(self):
        return self.name

你能发布完整的stacktrace吗?谢谢你的提示,但我已经尝试过多次删除、刷新、重置数据库,错误仍然出现。还有其他想法吗