Changeset 2902
- Timestamp:
- 05/14/06 18:49:29 (2 years ago)
- Files:
-
- django/trunk/django/db/models/query.py (modified) (1 diff)
- django/trunk/tests/modeltests/many_to_many/models.py (modified) (1 diff)
- django/trunk/tests/modeltests/many_to_one/models.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/db/models/query.py
r2859 r2902 183 183 select, sql, params = counter._get_sql_clause() 184 184 cursor = connection.cursor() 185 cursor.execute("SELECT COUNT(*)" + sql, params) 185 if self._distinct: 186 id_col = "%s.%s" % (backend.quote_name(self.model._meta.db_table), 187 backend.quote_name(self.model._meta.pk.column)) 188 cursor.execute("SELECT COUNT(DISTINCT(%s))" % id_col + sql, params) 189 else: 190 cursor.execute("SELECT COUNT(*)" + sql, params) 186 191 return cursor.fetchone()[0] 187 192 django/trunk/tests/modeltests/many_to_many/models.py
r2817 r2902 83 83 [NASA uses Python] 84 84 85 # The count() function respects distinct() as well. 86 >>> Article.objects.filter(publications__title__startswith="Science").count() 87 2 88 89 >>> Article.objects.filter(publications__title__startswith="Science").distinct().count() 90 1 91 85 92 # Reverse m2m queries are supported (i.e., starting at the table that doesn't 86 93 # have a ManyToManyField). django/trunk/tests/modeltests/many_to_one/models.py
r2809 r2902 205 205 >>> Reporter.objects.filter(article__headline__startswith='This').distinct() 206 206 [John Smith] 207 208 # Counting in the opposite direction works in conjunction with distinct() 209 >>> Reporter.objects.filter(article__headline__startswith='This').count() 210 3 211 >>> Reporter.objects.filter(article__headline__startswith='This').distinct().count() 212 1 207 213 208 214 # Queries can go round in circles.
