Changeset 6487
- Timestamp:
- 10/13/07 21:13:04 (1 year ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/queryset-refactor/django/db/models/sql/query.py
r6486 r6487 316 316 if not self.tables: 317 317 self.join((None, self.model._meta.db_table, None, None)) 318 if self.select_related: 319 self.fill_related_selections() 318 320 319 321 def get_columns(self): … … 490 492 return alias 491 493 492 def fill_ table_cache(self, opts=None, root_alias=None, cur_depth=0,494 def fill_related_selections(self, opts=None, root_alias=None, cur_depth=0, 493 495 used=None): 494 496 """ … … 501 503 opts = self.model._meta 502 504 root_alias = self.tables[0] 503 self.select.extend([(root_alias, f ) for f in opts.fields])505 self.select.extend([(root_alias, f.column) for f in opts.fields]) 504 506 if not used: 505 507 used = [] … … 510 512 table = f.rel.to._meta.db_table 511 513 alias = self.join((root_alias, table, f.column, 512 f.rel.get_related_field().column), exclusion =used)514 f.rel.get_related_field().column), exclusions=used) 513 515 used.append(alias) 514 516 self.select.extend([(table, f2.column) 515 517 for f2 in f.rel.to._meta.fields]) 516 self.fill_table_cache(f.rel.to._meta, alias, cur_depth + 1, used) 518 self.fill_related_selections(f.rel.to._meta, alias, cur_depth + 1, 519 used) 517 520 518 521 def add_filter(self, filter_expr, connection=AND, negate=False): django/branches/queryset-refactor/tests/modeltests/select_related/models.py
r5876 r6487 28 28 def __unicode__(self): 29 29 return self.name 30 30 31 31 class Klass(models.Model): 32 32 name = models.CharField(max_length=50) … … 34 34 def __unicode__(self): 35 35 return self.name 36 36 37 37 class Order(models.Model): 38 38 name = models.CharField(max_length=50) … … 64 64 models = [Domain, Kingdom, Phylum, Klass, Order, Family, Genus, Species] 65 65 assert len(names) == len(models), (names, models) 66 66 67 67 parent = None 68 68 for name, model in zip(names, models):
