这里一定有问题super(InviteManager, self).get_query_set()
但我不知道该用什么。当我查看用户实例的RelatedManager时,即使用户没有任何邀请,也可以使用Django自定义管理器与相关管理器
len(Invite.objects.by_email()) == len(user.invite_set.by_email())
即使用户没有任何邀请。但是,user.invite_set.all()会正确返回键入User对象的所有Invite对象。
class InviteManager(models.Manager):
"""with this we can get the honed querysets like user.invite_set.rejected"""
use_for_related_fields = True
def by_email(self):
return super(InviteManager, self).get_query_set().exclude(email='')
class Invite(models.Model):
"""an invitation from a user to an email address"""
user = models.ForeignKey('auth.User', related_name='invite_set')
email = models.TextField(blank=True)
objects = InviteManager()
'''
u.invite_set.by_email() returns everything that Invite.objects.by_email() does
u.invite_set.all() properly filters Invites and returns only those where user=u
'''
我在这里有同样的问题,你有任何进展? – shanyu 2009-10-31 20:32:25
我其实没有尝试过下面的解决方案。我在口袋里做了一件丑陋的工作,最后期限迫使我只用它。我应该抓住球并找出它! – 2009-11-01 06:42:37
对我来说同样的问题。此外,它看起来像打印通过执行相关管理器查询产生的查询时,WHERE子句在原始对象的ID上缺少一个筛选器 – Bobby 2015-08-25 15:54:04