Пользовательское разрешение Django не назначается вновь созданному пользователю

Это кажется довольно тривиальным, но я не могу понять, что я делаю неправильно. Я проверил несколько постов в SO, которые звучали похоже, но проблема, очевидно, кроется в другом месте.

У меня есть пользовательское разрешение на моей модели, can_key, и оно зарегистрировано правильно. Когда я пытаюсь add предоставить это разрешение вновь созданному пользователю, оно не добавляется.

from django.contrib.auth import get_user_model
from django.contrib.auth.models import Permission

def create_dummy_user(self, username):

  username = 'dummy_user'

  user = get_user_model().objects.create(username=username, password='asdf4321')
  user.save()

  user = get_user_model().objects.get(username=username)
  permission = Permission.objects.get(codename="can_key")

  print(permission)
  
  user.user_permissions.add(permission)

  user = get_user_model().objects.get(username=username)
  print(f"{user.username} is_active - {user.is_active}")
  print(f"{user.username} has perm {permission.codename} - {user.has_perm(permission)}")

  return user

Вывод на печать

test_web | main_app | record case | Can key record case
test_web | dummy_user is_active - True
test_web | dummy_user has perm can_key - False

Итак, пользователь был создан, разрешение существует / получено, но разрешение не добавляется. Почему?

Вам следует просмотреть документацию Django по кэшированию разрешений. нажмите для ответа на ваш вопрос

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