Почему печать 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.