При переходе от sqlite к СУБД PostgreSQL метод has_perm некорректно работает с программно созданными разрешениями

Недавно я перевел свое приложение django с sqlite на PostgreSQL.

После настройки БД PostgreSQL я сделал dumpdata в файл json, изменил файл settings.py соответственно новому движку, а затем loaddata. Все работало должным образом*.

Моя точка входа для моего сайта следующая:

@login_required
def index(request):
    """View function for home page of site."""
    if request.user.has_perm("myapp.access_main"):
        return redirect("myapp:main")
    elif request.user.has_perm("myappp.access_second"):
        return redirect("myapp:second")
    else:
        return PermissionDenied

У пользователей нет прав в моем приложении, но у групп, в которые они входят, есть.

У меня есть 2 группы (mods и group1, обе имеют разрешение "myapp.access_main", как и в моей старой базе данных).

Если я подключаюсь как admin (суперпользователь, которого я создал с помощью sqlite db, входящий в группу mods), все работает нормально, я перенаправляюсь на главную страницу. Однако, если я подключаюсь как user1 (пользователь, созданный через интерфейс администратора, созданный также с помощью sqlite db, является частью группы group1), метод has_perm(...) возвращает всегда False, следовательно, возникает ошибка PermissionDenied

Я не понимаю, почему метод has_perm не работает как положено для не-суперпользователей.

*: Одно важное замечание: мне пришлось сделать дампданные с исключением: ./manage.py dumpdata myapp --exclude=myapp.RightsSupport. RightsSupport - это неуправляемая модель, которая создала мои 2 разрешения ("myapp.access_main" и "myapp.access_second"). Я думаю, что проблема может возникнуть из-за этого, но я не уверен и не знаю, что делать. Похоже, что разрешения были созданы правильно, так как метод has_perm отлично работает с моим admin...

Картинка стоит тысячи работ: Вот 2 скриншота https://imgur.com/a/izAeQKS. Мне пришлось размыть и добавить красный текст, чтобы сделать его похожим на пример этого поста

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