voglio recuperare tutte le autorizzazioni per l'utente come elenco di premission id ma:Come ottenere le autorizzazioni utente?
user.get_all_permissions()
mi danno elenco di nomi di autorizzazione. Come farlo?
voglio recuperare tutte le autorizzazioni per l'utente come elenco di premission id ma:Come ottenere le autorizzazioni utente?
user.get_all_permissions()
mi danno elenco di nomi di autorizzazione. Come farlo?
La chiave è ottenere gli oggetti di autorizzazione di questo tipo:
from django.contrib.auth.models import Permission
permissions = Permission.objects.filter(user=user)
e lì si può accedere alla proprietà id
in questo modo:
permissions[0].id
Se si desidera che l'elenco (id, permission_name)
effettuare le seguenti operazioni:
perm_tuple = [(x.id, x.name) for x in Permission.objects.filter(user=user)]
Spero che sia d'aiuto!
Cosa succede se l'utente si trova in un gruppo che dispone di tale autorizzazione? –
@AmoghTalpallikar Ho avuto una risposta per risolvere il problema che hai segnalato. – DRC
per ottenere tutte le autorizzazioni di un determinato utente, anche le autorizzazioni associate a un gruppo di questo utente fa parte di:
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)
Sto usando questo codice ma per qualche motivo restituisco permessi duplicati. –
Ecco un'opzione per rimuovere i duplicati (presumibilmente perché sono permessi di gruppo e utente): 'lista (set (chain (user.user_permissions.filter (content_type = ctype) .values_list ('codename', flat = True), Permission. objects.filter (group__user = user, content_type = ctype) .values_list ('codename', flat = True)))) 'La catena dei sospetti è talvolta più efficiente di |. I valori_list chiama e filtra per tipo di contenuto non sono necessari ma sono ulteriori opzioni a seconda delle esigenze. – Chris
perché avete bisogno di questo? – karthikr
Ho bisogno di questo per impostare le corrette caselle di controllo in ModelMultipleChoiceField nel mio modulo – Nips
stai esponendo le autorizzazioni all'applicazione? non è una buona idea. – karthikr