我想向内置的auth.User
模型添加一个自定义管理器。在
我避免切换到自己的用户模型,因为数据库中的现有数据链接到auth_user表。在
因此,我将以下内容添加到模型.py公司名称:
from django.contrib.auth.models import User, UserManager
class ActiveUserManager(UserManager):
use_in_migrations = False
def get_queryset(self):
return super().get_queryset().filter(is_active=True)
# Monkeypatch auth.User to have custom manager
User.add_to_class('active_users', ActiveUserManager())
这似乎有效,直到我运行python manage.py makemigrations
时,Django在myvenv/Lib/site-packages/django/contrib/auth/migrations
文件夹中创建了一个迁移文件000n_auto_20181002_1721.py
,其中包含以下内容:
在类ActiveUserManager
中设置use_in_migrations = False
没有帮助。在
对于如何避免创建此迁移文件或如何在不使用此行为的情况下向内置的auth.User
模型添加自定义管理器,我将不胜感激。我使用的是django1.11。在
明白了。在
我还需要将
'objects'
管理器添加到User
类中,否则Django将'active_users'
视为默认管理器。在完整代码如下:
我通过阅读ModelState.fromModel()来实现这一点,其中},而{}管理器不是由^{设置的。在
'active_users'
是{即使设置了
use_in_migrations = False
,默认管理器也会添加到迁移中。在相关问题 更多 >
编程相关推荐