gpt4 book ai didi

带有相关管理器的 Django 自定义管理器

转载 作者:行者123 更新时间:2023-12-01 23:27:57 24 4
gpt4 key购买 nike

这里的 super(InviteManager, self).get_query_set() 肯定有问题,但我不知道该用什么。当我查看用户实例的RelatedManager时,

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
'''

最佳答案

您可能需要一个实现 by_email 过滤器的自定义查询集。请参阅 Subclassing Django QuerySets 上的示例.

class InviteQuerySet(models.query.QuerySet):
def by_email(self):
return self.exclude(email='')

class InviteManager(models.Manager):
def get_query_set(self):
model = models.get_model('invite', 'Invite')
return InviteQuerySet(model)

关于带有相关管理器的 Django 自定义管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1634002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com