Ticket #2256: queryset_count.patch
File queryset_count.patch, 1.5 KB (added by , 18 years ago) |
---|
-
django/db/models/query.py
197 197 "Performs a SELECT COUNT() and returns the number of records as an integer." 198 198 counter = self._clone() 199 199 counter._order_by = () 200 counter._select_related = False 201 202 offset = counter._offset 203 limit = counter._limit 200 204 counter._offset = None 201 205 counter._limit = None 202 counter._select_related = False203 206 204 207 try: 205 208 select, sql, params = counter._get_sql_clause() 206 except EmptyResultSet: 209 except EmptyResultSet: 207 210 return 0 208 211 209 212 cursor = connection.cursor() … … 213 216 cursor.execute("SELECT COUNT(DISTINCT(%s))" % id_col + sql, params) 214 217 else: 215 218 cursor.execute("SELECT COUNT(*)" + sql, params) 216 returncursor.fetchone()[0]219 count = cursor.fetchone()[0] 217 220 221 # Apply any offset and limit since using LIMIT or OFFSET in SQL doesn't 222 # change the output of COUNT. 223 if offset: 224 count -= offset 225 if limit: 226 count = min(limit, count) 227 228 return count 229 218 230 def get(self, *args, **kwargs): 219 231 "Performs the SELECT and returns a single object matching the given keyword arguments." 220 232 clone = self.filter(*args, **kwargs)