Je suis en cours d'exécution d'une installation Django avec GeoDjango et ont créé un modèle comme celui-ci:GeoDjango - forçant à Unicode: chaîne de besoin ou d'un tampon, LineString trouvé
#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)
Cela a fonctionné, et j'ai pu créer Les objets linestring, dans le terminal, et je ne les ai jamais vraiment montrés, mais c'était plus mon affichage n'étant pas encore terminé. Mais ensuite j'ai vu un screencast, bien qu'à partir de 2008, avec le créateur de geodjango - bronn, où il a obtenu un openlayer Open Map Map inteface sur la page d'administration, et j'ai suivi ses instructions en ajoutant un admin.py avec une fin OSMGeoAdmin comme ceci:
#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)
cela fonctionne aussi très bien - je reçois une carte sur laquelle je peux dessiner un linestring, mais lorsque je tente de le sauver - ou si j'ai un objet route déjà créé et essayer de voir la liste de Route sur adminpage - Je reçois une erreur. Plus précisément "coercition à Unicode: besoin de chaîne ou de tampon, LineString a trouvé" et d'après ce que je comprends cela vient d'essayer d'unicode un objet qui n'a pas une fonction __ unicode__ (ou quelque chose comme ça).
J'ai donc vérifié la définition de l'objet linestring et il n'y avait pas de fonction Unicode. J'ai donc tenté faiblement d'en ajouter un, sans aucune chance.
Donc, je suis là, perplexe. Quelqu'un sait comment je peux résoudre ce problème?
modifier stacktrace:
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
Pouvez-vous poster la pleine stacktrace? – godswearhats
modifié et ajouté stacktrace – useless