Chcę odzyskać wszystkie uprawnienia dla użytkownika, jak liście, ale id premission:Jak uzyskać uprawnienia użytkownika?
user.get_all_permissions()
dać mi listę nazwisk uprawnień. Jak to zrobić?
Chcę odzyskać wszystkie uprawnienia dla użytkownika, jak liście, ale id premission:Jak uzyskać uprawnienia użytkownika?
user.get_all_permissions()
dać mi listę nazwisk uprawnień. Jak to zrobić?
Kluczem jest dostać obiekty uprawnień jak to:
from django.contrib.auth.models import Permission
permissions = Permission.objects.filter(user=user)
i tam można uzyskać dostępu do właściwości id
takiego:
permissions[0].id
Jeśli chcesz lista (id, permission_name)
wykonaj następujące czynności:
perm_tuple = [(x.id, x.name) for x in Permission.objects.filter(user=user)]
Mam nadzieję, że pomoże!
Co się stanie, jeśli użytkownik znajduje się w grupie, która ma takie uprawnienia? –
@AmoghTalpallikar Mam problem, aby rozwiązać ten problem, który wskazałeś. – DRC
aby uzyskać wszystkie uprawnienia danego użytkownika, również uprawnienia związane z grupą ta osoba jest częścią:
from django.contrib.auth.models import Permission
def get_user_permissions(user):
if user.is_superuser:
return Permission.objects.all()
return user.user_permissions.all() | Permission.objects.filter(group__user=user)
Używam tego kodu, ale z jakiegoś powodu powraca on zduplikowanych uprawnień. –
Oto opcja usuwania duplikatów (prawdopodobnie z powodu uprawnień grupowych i użytkowników): 'list (set (chain (user.user_permissions.filter (content_type = ctype) .values_list ('nazwa kodowa', flat = True), Permission. objects.filter (group__user = user, content_type = ctype) .values_list ('codename', flat = True)))) 'Łańcuch podejrzany jest czasem bardziej wydajny niż |. Listy wartości i filtrowanie według typu zawartości są niepotrzebne, ale są to dalsze opcje w zależności od potrzeb. – Chris
dlaczego trzeba to? – karthikr
Potrzebuję tego, aby ustawić odpowiednie pola wyboru w ModelMultipleChoiceField w mojej formie – Nips
czy ujawniasz uprawnienia do aplikacji? to nie jest dobry pomysł. – karthikr