Я бы хотел добавить пользовательский менеджер во встроенную модель auth.User
.
Я избегаю переключения на свою собственную модель пользователя из-за существующих данных в базе данных, ссылающихся на таблицу auth_user.
Поэтому я добавляю следующее в models.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 не создаст файл миграции 000n_auto_20181002_1721.py
в папке myvenv/Lib/site-packages/django/contrib/auth/migrations
,со следующим содержанием:
# imports omitted
class Migration(migrations.Migration):
dependencies = [
('auth', '0008_alter_user_username_max_length'),
]
operations = [
migrations.AlterModelManagers(
name='user',
managers=[
('active_users', django.db.models.manager.Manager()),
('objects', django.contrib.auth.models.UserManager()),
],
),
]
Установка use_in_migrations = False
в классе ActiveUserManager
не помогает.
Буду признателен за ваши предложения о том, как избежать создания этого файла миграции или как добавитьнастраиваемый менеджер для встроенной модели auth.User
без этого поведения.Я использую Django 1.11.