Django: управление разрешениями, группами и пользователями при миграции данных
Проблема
Во время миграции данных я пытаюсь создать группу django.contrib.auth.models.Group
и несколько групп User
, а затем прикрепить эту группу к одному из пользователей.
Проблема, с которой я столкнулся (кроме того, что разрешения по-прежнему не создаются, но я уже нашел решение для этого), заключается в том, что по какой-то причине менеджер "многие ко многим" не работает так, как должен (?).
В основном я пытаюсь сделать что-то вроде:
group = Group.objects.create(name="manager")
# user creation...
user.groups.add(group)
Однако, я получаю следующую ошибку:
TypeError: Group instance expected, got <Group: manager>
Когда я пытаюсь повторить это в оболочке Django, все работает без проблем. Сбой происходит только при миграции. Есть идеи?
То, что я пробовал и другая информация
- Я пробовал заполнять m2m-отношение как через
User
related manager, так и черезGroup
related manager, то естьuser.groups.add(group)
иgroup.user_set.add(user)
. Оба дают мне аналогичную ошибку. - Только частично связано, но просто чтобы у меня были необходимые разрешения, у меня это первое в моей миграции:
for app_config in apps.get_app_configs():
app_config.models_module = True
create_permissions(app_config, verbosity=0)
app_config.models_module = None
- Группа якобы создана правильно. Учитывая, что я создаю группы и пользователей в разных вспомогательных функциях, я действительно захватываю группу с помощью
Group.objects.get(name="manager")
, и при печати она показывает правильную информацию.
Оказалось, что проблема возникает при прямом использовании модели django.contrib.auth.models.Group
. Если вместо этого использовать apps.get_model("auth.Group")
, то все работает нормально.