Well you were right. The insert didn't return the id, so that was the problem.
I used your trick (customizing the save method) and it seems to work just fine. So thank you ! On 17 avr, 20:58, akaariai <akaar...@gmail.com> wrote: > The problem seems to be that INSERT INTO partitioned_table values(...) > RETURNING ID isn't for some reason returning the ID. Can you confirm > this is the case by running the insert query manually from dbshell? > > I believe 1.3 used SELECT > currval(pg_get_serial_sequence('partitioned_table', 'id')) instead of > RETURNING ID. So, that might explain this issue. You could try to set > connection.features.can_return_id_from_insert to False just before > executing any insert query into this table (most conveniently done by > overriding the model's save() method). This is an ugly hack, but it > might make your code work in 1.4... > > - Anssi > > On Apr 17, 3:42 pm, Michaël Journo <michael.jou...@whalestreet.com> > wrote: > > > > > > > > > Hello, > > > I use postgresql 9.1 with postgresql_psycopg2 on debian (actually this > > also happens on my mac). I recently moved to django 1.4 and I got this > > error while creating a simple object : > > o = Object() > > o.fieldA = .. > > .... > > o.save() > > Traceback (most recent call last): > > File "<console>", line 1, in <module> > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/ > > lib/python2.6/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 "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/ > > lib/python2.6/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 "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/ > > lib/python2.6/site-packages/django/db/models/manager.py", line 203, in > > _insert > > return insert_query(self.model, objs, fields, **kwargs) > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/ > > lib/python2.6/site-packages/django/db/models/query.py", line 1576, in > > insert_query > > return query.get_compiler(using=using).execute_sql(return_id) > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/ > > lib/python2.6/site-packages/django/db/models/sql/compiler.py", line > > 914, in execute_sql > > return self.connection.ops.fetch_returned_insert_id(cursor) > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/ > > lib/python2.6/site-packages/django/db/backends/__init__.py", line 529, > > in fetch_returned_insert_id > > return cursor.fetchone()[0] > > TypeError: 'NoneType' object is unsubscriptable > > > My postgresql table for object is a partioned one, based on a trigger > > on insert that look for the right child table. I have a hard time > > finding information about this, except one post > > herehttp://postgresql.1045698.n5.nabble.com/INSERT-INTO-RETURNING-with-pa... > > suggesting to use rule instead of triggers for handling insert > > returning clause (and it seems it really can handle only ONE returning > > clause, i.e. return object.id). > > > And in any way, what I really don't understand is that everything > > worked just fine in django 1.3. > > > I don't know this is a real issue or me handling table partitioning > > the wrong way. > > > Thank you for your help. -- 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+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.