Changeset 7740
- Timestamp:
- 06/25/08 20:01:21 (3 months ago)
- Files:
-
- django/trunk/django/db/models/sql/query.py (modified) (3 diffs)
- django/trunk/tests/regressiontests/queries/models.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/db/models/sql/query.py
r7597 r7740 680 680 False, the join is only promoted if it is nullable, otherwise it is 681 681 always promoted. 682 683 Returns True if the join was promoted. 682 684 """ 683 685 if ((unconditional or self.alias_map[alias][NULLABLE]) and … … 686 688 data[JOIN_TYPE] = self.LOUTER 687 689 self.alias_map[alias] = tuple(data) 690 return True 691 return False 688 692 689 693 def change_aliases(self, change_map): … … 1295 1299 col = join[LHS_JOIN_COL] 1296 1300 joins = joins[:-1] 1301 promote = False 1297 1302 for join in joins[1:]: 1298 1303 # Only nullable aliases are promoted, so we don't end up 1299 1304 # doing unnecessary left outer joins here. 1300 self.promote_alias(join) 1305 if self.promote_alias(join, promote): 1306 promote = True 1301 1307 self.select.append((final_alias, col)) 1302 1308 self.select_fields.append(field) django/trunk/tests/regressiontests/queries/models.py
r7739 r7740 59 59 class Report(models.Model): 60 60 name = models.CharField(max_length=10) 61 creator = models.ForeignKey(Author, to_field='num' )61 creator = models.ForeignKey(Author, to_field='num', null=True) 62 62 63 63 def __unicode__(self): … … 192 192 >>> r2 = Report(name='r2', creator=a3) 193 193 >>> r2.save() 194 >>> r3 = Report(name='r3') 195 >>> r3.save() 194 196 195 197 Ordering by 'rank' gives us rank2, rank1, rank3. Ordering by the Meta.ordering … … 714 716 >>> ManagedModel.objects.update(data='mm') 715 717 718 A values() or values_list() query across joined models must use outer joins 719 appropriately. 720 >>> Report.objects.values_list("creator__extra__info", flat=True).order_by("name") 721 [u'e1', u'e2', None] 722 716 723 """} 717 724
