相关疑难解决方法(0)

自定义QuerySet和Manager而不会破坏DRY?

我正试图找到一种方法来实现自定义QuerySet和自定义Manager而不会破坏DRY.这是我到目前为止:

class MyInquiryManager(models.Manager):
    def for_user(self, user):
        return self.get_query_set().filter(
                    Q(assigned_to_user=user) |
                    Q(assigned_to_group__in=user.groups.all())
                )

class Inquiry(models.Model):   
    ts = models.DateTimeField(auto_now_add=True)
    status = models.ForeignKey(InquiryStatus)
    assigned_to_user = models.ForeignKey(User, blank=True, null=True)
    assigned_to_group = models.ForeignKey(Group, blank=True, null=True)
    objects = MyInquiryManager()
Run Code Online (Sandbox Code Playgroud)

这很好,直到我做这样的事情:

inquiries = Inquiry.objects.filter(status=some_status)
my_inquiry_count = inquiries.for_user(request.user).count()
Run Code Online (Sandbox Code Playgroud)

这会立即打破一切,因为QuerySet它没有相同的方法Manager.我已经尝试创建一个自定义QuerySet类,并在其中实现它MyInquiryManager,但我最终复制了所有的方法定义.

我也发现这个片段有效,但我需要传递额外的参数,for_user因此它会因为重新定义而严重依赖get_query_set.

有没有办法在不重新定义子类QuerySetManager子类中的所有方法的情况下执行此操作?

django django-models django-queryset django-managers

49
推荐指数
5
解决办法
3万
查看次数

如何从 Django 中提取活动用户电子邮件地址

我想从 Django 的主页 › 身份验证和授权 › 用户页面中提取活动用户电子邮件地址列表并将其放入模板中。有人可以帮助我实现这一目标吗?

到目前为止,我正在尝试做这样的事情:

from django.contrib.auth.models import User

if User.is_active:
    emails = User.objects.get(email=request.user.email)
Run Code Online (Sandbox Code Playgroud)

python django

0
推荐指数
1
解决办法
5474
查看次数