Hi,
I am trying to sum a field from a joined table and group by another
field from that joined table. Installation is the table I am querying
and CitlData is the table I am joining in.
This is the code:
installations =
Installation.objects.values('citldata__year').annotate(Sum('citldata__emissions'),Sum('citldata__allocations'))
I am getting the following error:
---------------------------------------------------------------------------
FieldError Traceback (most recent call
last)
/Users/pc/Documents/Work/sandbag/sandbag_svn/sandbag/sandbag/<ipython
console> in <module>()
/sw/lib/python2.6/site-packages/django/db/models/query.pyc in
values(self, *fields)
502
503 def values(self, *fields):
--> 504 return self._clone(klass=ValuesQuerySet, setup=True,
_fields=fields)
505
506 def values_list(self, *fields, **kwargs):
/sw/lib/python2.6/site-packages/django/db/models/query.pyc in
_clone(self, klass, setup, **kwargs)
747 c.__dict__.update(kwargs)
748 if setup and hasattr(c, '_setup_query'):
--> 749 c._setup_query()
750 return c
751
/sw/lib/python2.6/site-packages/django/db/models/query.pyc in
_setup_query(self)
870 if self.extra_names is not None:
871 self.query.set_extra_mask(self.extra_names)
--> 872 self.query.add_fields(self.field_names, False)
873 if self.aggregate_names is not None:
874
self.query.set_aggregate_mask(self.aggregate_names)
/sw/lib/python2.6/site-packages/django/db/models/sql/query.pyc in
add_fields(self, field_names, allow_m2m)
1509 self.select_fields.append(field)
1510 except MultiJoin:
-> 1511 raise FieldError("Invalid field name: '%s'" %
name)
1512 except FieldError:
1513 names = opts.get_all_field_names() +
self.extra.keys() + self.aggregate_select.keys()
FieldError: Invalid field name: 'citldata__year'
However, if I filter Installation by a field from CitlData (i.e.,
installations =
Installation.objects.filter(citldata__year__exact=2009)) it works
fine. Also, if I annotate without the group by / values() function it
also works fine (i.e., installations =
Installation.objects.annotate(Sum('citldata__emissions'),Sum('citldata__allocations'))
)
Does the values().annotate() functionality not support grouping by
joined table fields or am I missing something here?
Any help much appreciated!
Thanks,
Patrick
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.