> Does that answer your question? Yes Malcolm, thanks. I was trying to follow the call path to where Django asks the DB for the id. I'm new to Python, so I guess that's how I got lost.
Thanks for the help. Regards. On Mar 21, 2:32 pm, Malcolm Tredinnick <malc...@pointy-stick.com> wrote: > On Sat, 2009-03-21 at 00:17 -0700, chefsmart wrote: > > [...] > > > After calling save() on the model, we see that "Now it has an ID". > > > So Django is doing an SQL select query, something like last_insert_id, > > if I'm not wrong? > > That's correct. It varies for each database backend as to which SQL we > execute, but that's the general idea. PostgreSQL (in one configuration) > and Oracle can return the inserted ID directly from the insert query; we > handle that, too. > > > > > I have looked at the source code but it's not entirely clear to me how > > Django gets the id for the object that has just been saved. > > The code in question is in django/db/models/sql/subqueries.py. Look at > the InsertQuery.execute_sql() method. The path from public API to that > method is: > > (1) Model.save() (django/db/models/base.py) calls > (2) Manager._insert() (django/db/models/manager.py), which calls > (3) insert_query() (django/db/models/query.py), which calls > (4) InsertQuery.execute_sql() (django/db/models/sql/subqueries.py). > > There's also some interaction with the DatabaseFeatures and > DatabaseOperations in the respective django/db/backends/*/base.py files. > > Does that answer your question? > > Regards, > Malcolm --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---