auth_user 的自定义模型管理器

发布于 2024-12-03 08:53:42 字数 704 浏览 4 评论 0原文

我想在 auth user 模型上添加两个额外的管理器,activeinactive,以便为我提供活跃用户或非活跃用户。这就是模型的外观(即使它无效):

from django.contrib.auth.models import User

class ActiveManager(models.Manager):
    def get_query_set(self):
        return super(ActiveManager, self).get_query_set().filter(active=True)

class InactiveManager(models.Manager):
    def get_query_set(self):
        return super(InactiveManager, self).get_query_set().filter(active=False)

class User(models.Model):
    # user model...

    all_users = models.Manager()
    objects = ActiveManager()
    inactive = InactiveManager()

我应该将其放置在哪里/如何准确地进行查询,例如 User.inactive.all() ?谢谢。

I want to include two extra managers on the auth user model, active and inactive, to give me just active, or just inactive users. This is how the model would look (even if the it is invalid):

from django.contrib.auth.models import User

class ActiveManager(models.Manager):
    def get_query_set(self):
        return super(ActiveManager, self).get_query_set().filter(active=True)

class InactiveManager(models.Manager):
    def get_query_set(self):
        return super(InactiveManager, self).get_query_set().filter(active=False)

class User(models.Model):
    # user model...

    all_users = models.Manager()
    objects = ActiveManager()
    inactive = InactiveManager()

Where / how exactly would I place this so I can do a query such as User.inactive.all() ? Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白芷 2024-12-10 08:53:42

您需要在 Manager 上使用 contribute_to_class 方法。您将需要这样的东西,而不是您在那里的 User 类:

InactiveManager.contribute_to_class(User, 'inactive')

我怀疑您在哪里执行此操作并不重要,只要它发生得好且早(在您使用它之前!) - 某处的 models.py 感觉有点正确。

You're going to need to use the contribute_to_class method on your Manager. Instead of the User class you have there, you will need something like this:

InactiveManager.contribute_to_class(User, 'inactive')

I suspect it doesn't matter exactly where you do this as long as it happens nice and early (before you use it!) - a models.py somewhere would feel vaguely right.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文