Хорошо ... Я наконец-то придумал собственное решение (https://code.google.com/p/django-cube/), потому что я не смог найти то, что хотел.
С такой моделью:
class Instrument(models.Model):
name = models.CharField(max_length=100)
class Musician(models.Model):
firstname = models.CharField(max_length=100)
instrument = models.ForeignKey(Instrument)
Создать куб:
>>> c = Cube(['instrument__name', 'firstname'], Musician.objects.all(), len)
... #Cube(dimensions, queryset, aggregation_function)
... #You can use the Django field-lookup syntax for dates and foreign keys !!!
Запрос куба по одному (или нескольким) измерению (ям):
>>> c.measure_dict('firstname', 'instrument__name', full=False) == {
... 'Miles': {
... 'trumpet': {'measure': 1},
... 'sax': {'measure': 0},
... 'piano': {'measure': 0},
... },
... 'John': {
... 'trumpet': {'measure': 0},
... 'sax': {'measure': 1},
... 'piano': {'measure': 4},
... },
... }
Используйте пользовательские теги шаблонов и т. Д. *