DateQuerySets fail when limiting, the set needs to be resolved before accessing any single object.
This fails:
Order.objects.dates('created_at', 'month')[0]
with:
<class 'psycopg2.ProgrammingError'> Traceback (most recent call last)
/home/hukka/dev/tarjontajakysynta/<ipython console> in <module>()
/usr/lib/python2.5/site-packages/django/db/models/query.py in __getitem__(self, k)
155 else:
156 try:
--> 157 return list(self._clone(_offset=k, _limit=1))[0]
158 except self.model.DoesNotExist, e:
159 raise IndexError, e.args
/usr/lib/python2.5/site-packages/django/db/models/query.py in __iter__(self)
112
113 def __iter__(self):
--> 114 return iter(self._get_data())
115
116 def __getitem__(self, k):
/usr/lib/python2.5/site-packages/django/db/models/query.py in _get_data(self)
480 def _get_data(self):
481 if self._result_cache is None:
--> 482 self._result_cache = list(self.iterator())
483 return self._result_cache
484
/usr/lib/python2.5/site-packages/django/db/models/query.py in iterator(self)
661 qn(self._field.column))), sql, group_by, self._order)
662 cursor = connection.cursor()
--> 663 cursor.execute(sql, params)
664
665 has_resolve_columns = hasattr(self, 'resolve_columns')
/usr/lib/python2.5/site-packages/django/db/backends/util.py in execute(self, sql, params)
16 start = time()
17 try:
---> 18 return self.cursor.execute(sql, params)
19 finally:
20 stop = time()
<class 'psycopg2.ProgrammingError'>: syntax error at or near "GROUP"
LINE 1: ...r"."created_at") FROM "companies_order" LIMIT 1 GROUP BY 1...
This works:
list(Order.objects.dates('created_at', 'month'))[0]