Пользователь Django не наследует права доступа своих групп

В моем проекте Django мой пользователь jack находится в группе под названием 'Personals'. У группы 'Personals' есть разрешение с именем 'personal'. Но jack не наследует это разрешение от своей группы. Как я могу решить эту проблему?

>>>jack = User.objects.get(username="jack")
>>>jack_permissions = Permission.objects.filter(user=jack)
>>>print(jack_permissions)
<QuerySet []>   #It gives a emty query.

>>>jack_group = jack.groups.all()
>>>print(jack_group)
Personals
>>>jacks_group = Group.objects.get(name="Personals")
>>>jacks_groups_permissions = jacks_group.permissions.all()
>>>print(jacks_groups_permissions)
<QuerySet [<Permission: auth | user | The Personals>]>      #The Group has the permission The Personals

Предполагаю, что ваша цепочка отношений "многие-к-одному" выглядит следующим образом:

User > Group > Permission

А вы хотите получить все разрешения, относящиеся к определенному пользователю. Если это так, вы можете использовать нотацию двойного подчеркивания (__), чтобы получить сквозные отношения.

Получится ли у вас то, что вы хотите?

jack = User.objects.get(username="jack")
jack_permissions = Permission.objects.filter(group__users=jack)

Используйте User.get_all_permissions() для получения всех разрешений, которые имеет пользователь, включая разрешения, унаследованные от групп, или используйте User.get_group_permissions для получения всех разрешений, которые пользователь имеет от своих групп

jack_permissions = jack.get_all_permissions()
Вернуться на верх