這裏一定有問題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