#10064 closed (fixed)
error: annotate doesn't support select_related
| Reported by: | olivius | Owned by: | |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | dev |
| Severity: | Keywords: | annotate | |
| Cc: | flosch@…, elsdoerfer@… | Triage Stage: | Unreviewed |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
models.py:
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:
>>> 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
Change History (10)
comment:1 by , 17 years ago
comment:2 by , 17 years ago
| Description: | modified (diff) |
|---|
comment:3 by , 17 years ago
| Cc: | added |
|---|
comment:4 by , 17 years ago
| Description: | modified (diff) |
|---|
cleaned up the formatting of the description slightly.
comment:5 by , 17 years ago
models.py:
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)
amount = 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:
>>> 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:7 by , 17 years ago
| Cc: | added |
|---|
comment:8 by , 17 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
comment:10 by , 13 years ago
| Component: | ORM aggregation → Database layer (models, ORM) |
|---|
Note:
See TracTickets
for help on using tickets.
(Fixed formatting.)