Должна быть проблема с super(InviteManager, self).get_query_set()
здесь, но я не знаю, что использовать. Когда я просматриваю RelatedManager пользовательского экземпляра,
len(Invite.objects.by_email()) == len(user.invite_set.by_email())
Даже если у пользователя нет приглашений. Однако user.invite_set.all () корректно возвращает все объекты Пригласить, которые связаны с объектом User.
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
'''