Почему печать user.has_perm всегда True?

Пользователь назначен в группу студентов и из группы удаляет delete_permission, но приведенный ниже код возвращает true.

student_group  = Group.objects.get(name='student')

content_type = ContentType.objects.get_for_model(Department)
department_permission = Permission.objects.filter(content_type=content_type)
user = User.objects.get(email='test@gmail.com')
student_group.user_set.add(user)
for perm in department_permission:
    if perm.codename == "delete_department":
        student_group.permissions.remove(perm)
print(user.has_perm("quiz.delete_department"), "Quiz Permission after")

Разрешения кэшируются на объекте user см. документацию Django. Также refresh_from_db() не будет работать, вам нужно снова получить пользователя, см. this issue.

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