Ok..thanks.. I was afraid I was going to get that answer. If I do this with select_related, I'm still going to have to implement a loop to display them all in one list, because they'd come back as company.parent_company.parent_company etc, instead of all in one top level list... right?
On Oct 8, 9:19 am, Malcolm Tredinnick <[EMAIL PROTECTED]> wrote: > On Mon, 2007-10-08 at 13:13 +0000, [EMAIL PROTECTED] wrote: > > In my model class I have: > > > class Company(models.Model): > > company_id = models.AutoField(primary_key=True) > > parent_company = models.ForeignKey("self",null=True) > > . > > . > > > How would I query to get back all children companies, as well as all > > of their children companies, and their children companies, etc, > > without writing a nested loop to do so? > > You can't do it with a general query because there's no way to do it in > SQL with this data structure. The SQL has to do a join each time you > query from parent back to child (or vice-versa), so we need to know the > number of joins to create a query construction time. > > There is a "depth" parameter for select_related() queries that limits > the number of recursion steps (otherwise infinite loops would result for > queries like this) and you could use that to control the maximum number > of children. However, I believe there are some bugs with it working for > small values of depth (depth=1) and there might be others, so check the > results carefully. > > 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---