Comment obtenir une liste de tous les utilisateurs disposant d'une autorisation spécifique du groupe dans Django
Je veux obtenir une liste de tous les Django d'authentification de l'utilisateur avec une autorisation spécifique du groupe, quelque chose comme ceci:
user_dict = {
'queryset': User.objects.filter(permisson='blogger')
}
Je ne trouve pas comment faire cela. Comment sont les permissions des groupes enregistrés dans le modèle de l'utilisateur?
InformationsquelleAutor espenhogbakk | 2008-12-18
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez obtenir la liste des utilisateurs par l'autorisation, regardez cette variante:
| Q(is_superuser=True)
😉Ce serait la solution la plus
Je pense que pour les autorisations de groupe, les permissions d'accès sont stockés à l'égard de groupes, et alors les utilisateurs ont des groupes liés à eux. Donc, il vous suffit de résoudre l'utilisateur - groupes de la relation.
par exemple
Basé sur @Glader réponse, cette fonction de l'enveloppe vers le haut en une seule requête, et a été modifié pour algo obtenir le les superutilisateurs (car, par définition, ils ont tous les perms):
Ne pas oublier que la définition de l'autorisation nom de code n'est pas assez parce que les différentes applications peuvent réutiliser le même nom de code. On doit obtenir la permission de l'objet à interroger les Utilisateurs correctement:
Code avec les importations:
https://github.com/Dmitri-Sintsov/django-jinja-knockout/blob/master/django_jinja_knockout/models.py
Groupes sont plusieurs-à-plusieurs avec les Utilisateurs (vous voyez, rien d'extraordinaire, juste de Django modèles...), donc la réponse par la cms est droit. En Plus cela fonctionne dans les deux sens: le fait d'avoir un groupe, vous pouvez lister tous les utilisateurs par l'inspection
user_set
attribut.Basé sur @Augusto réponse, j'ai fait les opérations suivantes avec un modèle gestionnaire et à l'aide de la authtools de la bibliothèque. C'est dans
querysets.py
:Puis dans
models.py
:Essayez ceci:
(simplifié de la cms " réponse, qui je ne peux pas modifier)