Tuesday, October 2, 2012

Re: Django 1.4.1, multiple geometry fields problem

I guess all this is related to special munging required by Oracle:

https://code.djangoproject.com/ticket/10888


2.10.2012 15:12, George Silva kirjoitti:
> Then it's probably Oracle, which is riddled with bugs on the spatial part.
>
> I'm using PostGIS.
>
> On Tue, Oct 2, 2012 at 8:38 AM, Jani Tiainen <redetin@gmail.com
> <mailto:redetin@gmail.com>> wrote:
>
>
> 2.10.2012 14:34, Jani Tiainen kirjoitti:
>
> 2.10.2012 14:06, George Silva kirjoitti:
>
> This is puzzling. I'm on 1.4.1 and I have models with two
> geometric
> columns, without a hitch.
>
> The only interesting thing I can see is that you are using
> SRID =
> settings.4326 on extent. Is that correct?
>
>
> Nope. Normally it's something totally different depending on
> customer
> (and picked from settings file). I just tried qicly replace it
> by more
> common WGS84...
>
> Maybe it's Oracle spesific or are you using Oracle as well?
>
>
> It might be Oracle spesific since I recall that there was something
> done long time ago for Oracle and NULL values... And it only happens
> if one or both fields are None (NULL) but if I provide data for both
> fields it works.
>
>
> On Tue, Oct 2, 2012 at 7:52 AM, Jani Tiainen
> <redetin@gmail.com <mailto:redetin@gmail.com>
> <mailto:redetin@gmail.com <mailto:redetin@gmail.com>>> wrote:
>
> Hi,
>
> I've several models that contains two geometry fields
> (following is
> simplified example):
>
> class NetDiagram(models.Model):
> # Columns
> name = models.CharField(max_length=____60,
> blank=True, null=True)
>
> location = models.GeometryField(_("____Center"),
> db_column='location', srid=4326, null=True, blank=True)
> extent = models.GeometryField(_("____Extent"),
> db_column='extent', srid=settings.4326, null=True,
> blank=True)
>
> objects = models.GeoManager()
>
>
> Now when trying to save model like that I get:
>
> Traceback (most recent call last):
> File
>
> "c:\users\jtiai\work\keycom-____dev-std\prj\keycom\keycom_net_____diagram\diagram\entity_____diagram_builder.py",
>
> line 134, in _save_to_database
> netdiagram.save()
> File
>
> "C:\Users\jtiai\Work\keycom-____dev-std\lib\site-packages\____django\db\models\base.py",
>
> line 463, in save
> self.save_base(using=using, force_insert=force_insert,
> force_update=force_update)
> File
>
> "C:\Users\jtiai\Work\keycom-____dev-std\lib\site-packages\____django\db\models\base.py",
>
> line 551, in save_base
> result = manager._insert([self], fields=fields,
> return_id=update_pk, using=using, raw=raw)
> File
>
> "C:\Users\jtiai\Work\keycom-____dev-std\lib\site-packages\____django\db\models\manager.py",
>
> line 203, in _insert
> return insert_query(self.model, objs, fields,
> **kwargs)
> File
>
> "C:\Users\jtiai\Work\keycom-____dev-std\lib\site-packages\____django\db\models\query.py",
>
> line 1576, in insert_query
> return
> query.get_compiler(using=____using).execute_sql(return_id)
> File
>
> "C:\Users\jtiai\Work\keycom-____dev-std\lib\site-packages\____django\db\models\sql\compiler.____py",
>
> line 909, in execute_sql
> for sql, params in self.as_sql():
> File
>
> "C:\Users\jtiai\Work\keycom-____dev-std\lib\site-packages\____django\db\models\sql\compiler.____py",
>
> line 886, in as_sql
> for val in values
> File
>
> "C:\Users\jtiai\Work\keycom-____dev-std\lib\site-packages\____django\contrib\gis\db\____backends\oracle\compiler.py",
>
> line 25, in placeholder
> param_idx = self.query.columns.index(____field.column)
> AttributeError: 'InsertQuery' object has no attribute
> 'columns'
>
>
> Error is consistent and happens when there is two or
> more geometry
> fields on a single model.
>
> Same code worked on 1.3 flawlessly.
>
> --
> Jani Tiainen
>
> - Well planned is half done and a half done has been
> sufficient
> before...
>
> --
> You received this message because you are subscribed to
> the Google
> Groups "Django users" group.
> To post to this group, send email to
> django-users@googlegroups.com
> <mailto:django-users@googlegroups.com>
> <mailto:django-users@__googlegroups.com
> <mailto:django-users@googlegroups.com>>.
> To unsubscribe from this group, send email to
> django-users+unsubscribe@__goo__glegroups.com
> <http://googlegroups.com>
> <mailto:django-users%__2Bunsubscribe@googlegroups.com
> <mailto:django-users%252Bunsubscribe@googlegroups.com>__>.
> For more options, visit this group at
> http://groups.google.com/____group/django-users?hl=en
> <http://groups.google.com/__group/django-users?hl=en>
> <http://groups.google.com/__group/django-users?hl=en
> <http://groups.google.com/group/django-users?hl=en>>.
>
>
>
>
> --
> George R. C. Silva
>
> Desenvolvimento em GIS
> http://geoprocessamento.net
> http://blog.geoprocessamento.__net
> <http://blog.geoprocessamento.net>
>
> --
> You received this message because you are subscribed to the
> Google
> Groups "Django users" group.
> To post to this group, send email to
> django-users@googlegroups.com
> <mailto:django-users@googlegroups.com>.
> To unsubscribe from this group, send email to
> django-users+unsubscribe@__googlegroups.com
> <mailto:django-users%2Bunsubscribe@googlegroups.com>.
> For more options, visit this group at
> http://groups.google.com/__group/django-users?hl=en
> <http://groups.google.com/group/django-users?hl=en>.
>
>
>
>
>
> --
> Jani Tiainen
>
> - Well planned is half done and a half done has been sufficient
> before...
>
> --
> You received this message because you are subscribed to the Google
> Groups "Django users" group.
> To post to this group, send email to django-users@googlegroups.com
> <mailto:django-users@googlegroups.com>.
> To unsubscribe from this group, send email to
> django-users+unsubscribe@__googlegroups.com
> <mailto:django-users%2Bunsubscribe@googlegroups.com>.
> For more options, visit this group at
> http://groups.google.com/__group/django-users?hl=en
> <http://groups.google.com/group/django-users?hl=en>.
>
>
>
>
> --
> George R. C. Silva
>
> Desenvolvimento em GIS
> http://geoprocessamento.net
> http://blog.geoprocessamento.net
>
> --
> You received this message because you are subscribed to the Google
> Groups "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscribe@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.


--
Jani Tiainen

- Well planned is half done and a half done has been sufficient before...

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment