Что такое "swappable" в метафоре модели?

Глядя на жесткий код модели django auth, я натолкнулся на этот бит кода:

class User(AbstractUser):
    class Meta(AbstractUser.Meta):
        swappable = 'AUTH_USER_MODEL'

Очевидно, что он имеет какое-то отношение к новому параметру AUTH_USER_MODEL в settings.py, но как он на самом деле работает, каким образом "трюк" python?

И в каких других ситуациях его можно использовать?

Ответы

Ответ 1

swappable - это "намеренно недокументированная" функция, которая в настоящее время находится в стадии разработки/тестирования. Он использовал для обработки "У меня есть базовая абстрактная модель, которая имеет некоторые отношения с внешним ключом". Чуть более подробную информацию можно получить в системе продажи Django и github. Поскольку это "скрытая альфа-функция", она не гарантирует работу (для чего-либо другого, кроме Пользователя), и понимание детальной операции, скорее всего, потребует погружения в исходный код. Он работает с AUTH_USER_MODEL, потому что модель пользователя и флаг с возможностью замены были разработаны вместе, специально для друг друга.

Ответ 2

Django 1.5 добавила модели пользователей с возможностью замены, поэтому вы можете заменить модель Django User на свой собственный (ограничьте количество символов, используйте email как идентификатор...)

Подробнее: https://docs.djangoproject.com/en/dev/releases/1.5/#configurable-user-model https://docs.djangoproject.com/en/dev/topics/auth/customizing/#auth-custom-user