Я не уверен, что правильно вас понимаю, но я думаю, что вы хотите вычислить это единственное число (используя синтаксис PostgreSQL):
SELECT CAST(COUNT(DISTINCT cake_id) AS REAL) / COUNT(DISTINCT dwarf_id) FROM dwarves_eating_cakes
Возможно, есть какой-то способ сделать это водин QuerySet, если вы присоединяетесь к столу с самим собой (начинаете махать рукой), но это кажется мне неэффективным и неловким.Лично я склонен выполнять запрос напрямую:
def cake_average() :
from django.db import connection
c = connection.cursor()
c.execute("SELECT CAST(COUNT(DISTINCT cake_id) AS REAL) / COUNT(DISTINCT dwarf_id) FROM dwarves_eating_cakes")
return c.fetchall()[0][0]
Одним из преимуществ этого подхода является то, что вы можете расширить эту функцию для вычисления дополнительной статистики в том же запросе.