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"), то все работает нормально.

Вернуться на верх