Django Group

Opération de base avec les groupes

Création d’un groupe

In [1]: g1 = Group.objects.create(name='test_create_groupe')

Liste de tous les groupes

In [4]: from django.contrib.auth.models import Group
In [5]: groups = Group.objects.all()

In [21]: groups
Out[21]: <QuerySet [<Group: groupe_gerer_projets>, <Group: groupe_creer_demandes>, <Group: groupe_traiter_demandes>, <Group: test_create_groupe>]>

Ajouter un user dans un groupe

from django.contrib.auth.models import Group
my_group = Group.objects.get(name='my_group_name')
my_group.user_set.add(your_user)

Lister les utilisateurs d’un groupe ( user_set )

In [19]: g1.user_set.all()
Out[19]: <QuerySet [<User: Patrick VERGAIN>]>

Description

Les modèles django.contrib.auth.models.Group sont une manière générique de segmenter les utilisateurs afin de pouvoir leur attribuer des permissions ou de les désigner par un nom défini.

Un utilisateur peut appartenir à autant de groupes que nécessaire.

Un utilisateur d’un groupe reçoit automatiquement les permissions attribuées à ce groupe. Par exemple, si le groupe Éditeurs du site possède la permission can_edit_home_page, tout utilisateur membre du groupe possédera cette permission.

Au-delà des permissions, les groupes sont un bon moyen de regrouper les utilisateurs sous un nom défini, afin de leur attribuer certaines fonctionnalités particulières.

Par exemple, vous pourriez créer un groupe Utilisateurs spéciaux et écrire ensuite du code qui leur donne accès à une section réservée aux membres sur le site, ou leur envoyer des courriels s’adressant uniquement aux membres.

class contrib.auth.models.Group

 1 class Group(models.Model):
 2     """
 3     Groups are a generic way of categorizing users to apply permissions, or
 4     some other label, to those users. A user can belong to any number of
 5     groups.
 6
 7     A user in a group automatically has all the permissions granted to that
 8     group. For example, if the group 'Site editors' has the permission
 9     can_edit_home_page, any user in that group will have that permission.
10
11     Beyond permissions, groups are a convenient way to categorize users to
12     apply some label, or extended functionality, to them. For example, you
13     could create a group 'Special users', and you could write code that would
14     do special things to those users -- such as giving them access to a
15     members-only portion of your site, or sending them members-only email
16     messages.
17     """
18     name = models.CharField(_('name'), max_length=150, unique=True)
19     permissions = models.ManyToManyField(
20         Permission,
21         verbose_name=_('permissions'),
22         blank=True,
23     )
24
25     objects = GroupManager()
26
27     class Meta:
28         verbose_name = _('group')
29         verbose_name_plural = _('groups')
30
31     def __str__(self):
32         return self.name
33
34     def natural_key(self):
35         return (self.name,)

class contrib.auth.models.GroupManager

1 class GroupManager(models.Manager):
2     """
3     The manager for the auth's Group model.
4     """
5     use_in_migrations = True
6
7     def get_by_natural_key(self, name):
8         return self.get(name=name)