django-geoposition
django-geoposition copied to clipboard
Manually save the instance raises DataError: value too long for type character varying(42)
django==1.11.7 django-geoposition==0.3.0
models
class Company(models.Model):
...
position = GeopositionField()
In the shell
I did
comp = Company(name='El Corporation', number='111', country='TH', position=GeopositionField(37, -112))
It is fine except when I commit to database
---------------------------------------------------------------------------
DataError Traceback (most recent call last)
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/backends/utils.py in execute(self, sql, params)
64 else:
---> 65 return self.cursor.execute(sql, params)
66
DataError: value too long for type character varying(42)
The above exception was the direct cause of the following exception:
DataError Traceback (most recent call last)
<ipython-input-14-7c47c29d69ab> in <module>()
----> 1 comp.save()
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/base.py in save(self, force_insert, force_update, using, update_fields)
806
807 self.save_base(using=using, force_insert=force_insert,
--> 808 force_update=force_update, update_fields=update_fields)
809 save.alters_data = True
810
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/base.py in save_base(self, raw, force_insert, force_update, using, update_fields)
836 if not raw:
837 self._save_parents(cls, using, update_fields)
--> 838 updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
839 # Store the database on which the object was saved
840 self._state.db = using
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/base.py in _save_table(self, raw, cls, force_insert, force_update, using, update_fields)
922
923 update_pk = meta.auto_field and not pk_set
--> 924 result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
925 if update_pk:
926 setattr(self, meta.pk.attname, result)
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/base.py in _do_insert(self, manager, using, fields, update_pk, raw)
961 """
962 return manager._insert([self], fields=fields, return_id=update_pk,
--> 963 using=using, raw=raw)
964
965 def delete(self, using=None, keep_parents=False):
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/manager.py in manager_method(self, *args, **kwargs)
83 def create_method(name, method):
84 def manager_method(self, *args, **kwargs):
---> 85 return getattr(self.get_queryset(), name)(*args, **kwargs)
86 manager_method.__name__ = method.__name__
87 manager_method.__doc__ = method.__doc__
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/query.py in _insert(self, objs, fields, return_id, raw, using)
1074 query = sql.InsertQuery(self.model)
1075 query.insert_values(fields, objs, raw=raw)
-> 1076 return query.get_compiler(using=using).execute_sql(return_id)
1077 _insert.alters_data = True
1078 _insert.queryset_only = False
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/models/sql/compiler.py in execute_sql(self, return_id)
1105 with self.connection.cursor() as cursor:
1106 for sql, params in self.as_sql():
-> 1107 cursor.execute(sql, params)
1108 if not (return_id and cursor):
1109 return
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/backends/utils.py in execute(self, sql, params)
78 start = time()
79 try:
---> 80 return super(CursorDebugWrapper, self).execute(sql, params)
81 finally:
82 stop = time()
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/backends/utils.py in execute(self, sql, params)
63 return self.cursor.execute(sql)
64 else:
---> 65 return self.cursor.execute(sql, params)
66
67 def executemany(self, sql, param_list):
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/utils.py in __exit__(self, exc_type, exc_value, traceback)
92 if dj_exc_type not in (DataError, IntegrityError):
93 self.wrapper.errors_occurred = True
---> 94 six.reraise(dj_exc_type, dj_exc_value, traceback)
95
96 def __call__(self, func):
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/utils/six.py in reraise(tp, value, tb)
683 value = tp()
684 if value.__traceback__ is not tb:
--> 685 raise value.with_traceback(tb)
686 raise value
687
~/.pyenv/versions/poink/lib/python3.6/site-packages/django/db/backends/utils.py in execute(self, sql, params)
63 return self.cursor.execute(sql)
64 else:
---> 65 return self.cursor.execute(sql, params)
66
67 def executemany(self, sql, param_list):
DataError: value too long for type character varying(42)
i got the same issue #98