#10064: error: annotate doesn't support select_related
--------------------------------------+-------------------------------------
          Reporter:  olivius          |         Owner:          
            Status:  new              |     Milestone:  post-1.0
         Component:  ORM aggregation  |       Version:  SVN     
        Resolution:                   |      Keywords:  annotate
             Stage:  Unreviewed       |     Has_patch:  0       
        Needs_docs:  0                |   Needs_tests:  0       
Needs_better_patch:  0                |  
--------------------------------------+-------------------------------------
Old description:

> {{{
> models.py:[[BR]]
>
> class Account(models.Model):
>     accountname = models.CharField(max_length=20)
>     account_creator = models.ForeignKey(User)
>     description = models.TextField(_('description'), blank=True)
>
>     def __unicode__(self):
>         return self.account
>

> class Category(models.Model):
>     category_name = models.CharField(max_length=50)
>     category_creator = models.ForeignKey(User)
>     description = models.TextField(_('description'), blank=True)
>     def __unicode__(self):
>         return self.category
>

> class Transaction(models.Model):
>     category            = models.ForeignKey(Category)
>     account_from        = models.ForeignKey(Account,
> related_name='account_from')
>     account_to          = models.ForeignKey(Account,
> related_name='account_to')
>     creator             = models.ForeignKey(User)
>     label               = models.CharField(_('label'), max_length=30)
>     description         = models.TextField(_('description'), blank=True)
>     ammount             = models.DecimalField(_('amount'),max_digits=8,
> decimal_places=2)
>     created_at          = models.DateTimeField(_('created at'),
> default=datetime.now)
>     updated_at          = models.DateTimeField(_('updated at'))
>
>     def __unicode__(self):
>         return self.label
> }}}
>
> shell:[[BR]]
>
> '''transactions=Transaction.objects.select_related('category','account_from','account_to').annotate(Sum('amount')).order_by('category','updated_at')'''
>
> '''print transactions'''
>
> Traceback (most recent call last):
>   File "<console>", line 1, in <module>
>   File "C:\Python25\lib\site-packages\django\db\models\query.py", line
> 239, in _
> _getitem__
>     return list(qs)[0]
>   File "C:\Python25\lib\site-packages\django\db\models\query.py", line
> 163, in _
> _len__
>     self._result_cache.extend(list(self._iter))
>   File "C:\Python25\lib\site-packages\django\db\models\query.py", line
> 294, in i
> terator
>     setattr(obj, aggregate, row[i+aggregate_start])
> IndexError: tuple index out of range

New description:

 models.py:[[BR]]
 {{{
 class Account(models.Model):
     accountname = models.CharField(max_length=20)
     account_creator = models.ForeignKey(User)
     description = models.TextField(_('description'), blank=True)

     def __unicode__(self):
         return self.account


 class Category(models.Model):
     category_name = models.CharField(max_length=50)
     category_creator = models.ForeignKey(User)
     description = models.TextField(_('description'), blank=True)
     def __unicode__(self):
         return self.category


 class Transaction(models.Model):
     category            = models.ForeignKey(Category)
     account_from        = models.ForeignKey(Account,
 related_name='account_from')
     account_to          = models.ForeignKey(Account,
 related_name='account_to')
     creator             = models.ForeignKey(User)
     label               = models.CharField(_('label'), max_length=30)
     description         = models.TextField(_('description'), blank=True)
     ammount             = models.DecimalField(_('amount'),max_digits=8,
 decimal_places=2)
     created_at          = models.DateTimeField(_('created at'),
 default=datetime.now)
     updated_at          = models.DateTimeField(_('updated at'))

     def __unicode__(self):
         return self.label
 }}}

 shell:[[BR]]

 
'''transactions=Transaction.objects.select_related('category','account_from','account_to').annotate(Sum('amount')).order_by('category','updated_at')'''

 '''print transactions'''
 {{{
 Traceback (most recent call last):
   File "<console>", line 1, in <module>
   File "C:\Python25\lib\site-packages\django\db\models\query.py", line
 239, in __getitem__
     return list(qs)[0]
   File "C:\Python25\lib\site-packages\django\db\models\query.py", line
 163, in __len__
     self._result_cache.extend(list(self._iter))
   File "C:\Python25\lib\site-packages\django\db\models\query.py", line
 294, in iterator
     setattr(obj, aggregate, row[i+aggregate_start])
 IndexError: tuple index out of range
 }}}

Comment (by kmtracey):

 (Fixed formatting.)

-- 
Ticket URL: <http://code.djangoproject.com/ticket/10064#comment:2>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to