from quotes.models import QuoteTag from django.db.models import Count, Max def build_cloud(): maxtag = QuoteTag.objects \ .all() \ .aggregate(max=Max('quote'))['max'] print maxtag tags = QuoteTag.objects \ .annotate(num_quotes=Count('quote'), size=Count(1)) \ .order_by('-num_quotes')[:20] for tag in tags: tag.size = int(10 * float(tag.num_quotes) / maxtag) return {'cloud': tags}