如果您想要用户,则需要通过查询用户模型并加入关系来以相反的方式访问它。这是相关文档
应该是这样的:
from django.db.models import Count
users = User.objects.annotate(num_followers=Count('to_users')).order_by('-num_followers')
这将为您提供用户,他们每个人都将拥有一个额外的属性num_followers
模型.py
from django.contrib.auth.models import User
from django.db import models
class Relationship(models.Model):
from_user = models.ForeignKey(User, related_name='from_users')
to_user = models.ForeignKey(User, related_name='to_users')
测试
>>> from so.models import *
>>> from django.contrib.auth.models import User
>>> u1 = User()
>>> u1.username='user1'
>>> u1.save()
>>> u2 = User()
>>> u2.username='user2'
>>> u2.save()
>>> u3=User()
>>> u3.username='user3'
>>> u3.save()
>>> # so we have 3 users now
>>> r1 = Relationship()
>>> r1.from_user=u1
>>> r1.to_user=u2
>>> r1.save()
>>> r2=Relationship()
>>> r2.from_user=u1
>>> r2.to_user=u3
>>> r2.save()
>>> r3=Relationship()
>>> r3.from_user=u2
>>> r3.to_user=u3
>>> r3.save()
>>> rels = Relationship.objects.all()
>>> rels.count()
3
>>> # we have 3 relationships: user1 follows user2, user1 follows user3, user2 follows user3
>>> users = User.objects.annotate(num_followers=Count('to_users')).order_by('-num_followers')
>>> for user in users:
>>> print user.username, user.num_followers
user3 2
user2 1
user1 0
EDIT2修正了错别字,添加了测试