2012-07-13 6 views
1

저는 PostgreSQL 9.1, Django 1.3.1, psycopg2 2.4.5 및 라이브러리 GEOS 3.3.0, PostGIS 1.5.4 및 ProJ 4.7을 사용하여 위치 정보가 포함 된 데이터베이스를 구축하고 있습니다. .0.OFTInteger를 십진수로 변환 할 때 장고 오류가 발생했습니다.

모양을보다 단순하게 만들기 위해 최적화 파일을 사용하여 모양 파일을 데이터베이스에로드하는 명령이 있습니다. 간단한 모델을 유지하기 위해

은, 난 그냥 문제가 필드를 넣어 것입니다 : 이제 때

Circonscription.objects.create(
      id_cep=feature['id_cep'], 
      co_cep=feature['co_cep'], 
      nm_cep=feature['nm_cep'], 
      nmtri_cep=feature['nmtri_cep'], 
      dh_maj=feature['dh_maj'], 
      shape=geometry.wkt, 
      simple_shape=simple_geometry.wkt, 
      centroid=geometry.geos.centroid) 

: 난 모양의 파일을 생성 할 때

class Circonscription(models.Model): 
    shape = models.GeometryField() 
    simple_shape = models.GeometryField() 
    centroid = models.PointField(null=True) 

, 나는이 작업을 수행 내 명령을 실행하면이 오류와 함께 실패합니다.

File "/home/pg/Projets/python/myproject/circonscriptions/management/commands/loadshapefiles.py", line 174, in add_boundaries_for_layer 
centroid=geometry.geos.centroid) 
File "/home/pg/.virtualenvs/myproject/local/lib/python2.7/site-packages/django/db/models/manager.py", line 138, in create 
    return self.get_query_set().create(**kwargs) 
    File "/home/pg/.virtualenvs/myproject/local/lib/python2.7/site-packages/django/db/models/query.py", line 360, in create 
    obj.save(force_insert=True, using=self.db) 
    File "/home/pg/.virtualenvs/myproject/local/lib/python2.7/site-packages/django/db/models/base.py", line 460, in save 
    self.save_base(using=using, force_insert=force_insert, force_update=force_update) 
    File "/home/pg/.virtualenvs/myproject/local/lib/python2.7/site-packages/django/db/models/base.py", line 543, in save_base 
    for f in meta.local_fields if not isinstance(f, AutoField)] 
    File "/home/pg/.virtualenvs/myproject/local/lib/python2.7/site-packages/django/db/models/fields/subclassing.py", line 28, in inner 
    return func(*args, **kwargs) 
    File "/home/pg/.virtualenvs/myproject/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 786, in get_db_prep_save 
    return connection.ops.value_to_db_decimal(self.to_python(value), 
    File "/home/pg/.virtualenvs/myproject/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 761, in to_python 
    return decimal.Decimal(value) 
    File "/usr/lib/python2.7/decimal.py", line 658, in __new__ 
    raise TypeError("Cannot convert %r to Decimal" % value) 
TypeError: Cannot convert <django.contrib.gis.gdal.field.OFTInteger object at 0x2458b50> to Decimal 

아무도 그것에 대해 실마리가 있습니까?

답변

1

과정에서 어딘가에 문자열로 변환해야하고 또 다른 오류에 대한 this problem이었다 마침내 그것을 해결했다. 저장하려면 모델에 전달하기 전에 값을 올바른 인코딩 (utf-8)으로 변환해야합니다.

0

진수 문자열을 기대하지만, 당신이 OTFInteger을 공급하고 있습니다, 당신은 어떻게 든 값의 인코딩을해야했다

+0

인쇄 할 경우 Point (lat, lng)이고 해당 필드도 해당 유형입니다. – Assertnotnull