3👍
django-groups-manager
This can be done using django-groups-manager
:
- Documentation: https://django-groups-manager.readthedocs.io/en/latest/
- GitHub: https://github.com/vittoriozamboni/django-groups-manager
- PyPi: https://pypi.org/project/django-groups-manager/
The following is taken from the documentation. It shows creating a group called ‘F.C. Internazionale Milan’, then adding ‘Staff’ and ‘Players’ sub-groups, then finally adding members to those groups.
from groups_manager.models import Group, Member
fc_internazionale = Group.objects.create(name='F.C. Internazionale Milan')
staff = Group.objects.create(name='Staff', parent=fc_internazionale)
players = Group.objects.create(name='Players', parent=fc_internazionale)
thohir = Member.objects.create(first_name='Eric', last_name='Thohir')
staff.add_member(thohir)
palacio = Member.objects.create(first_name='Rodrigo', last_name='Palacio')
players.add_member(palacio)
django-mptt
Note that, although the django-group-manager
package appears to be actively maintained, this package is based on the django-mptt
package, which is marked as unmaintained on the GitHub project.
As mentioned in a previous comment, the django-mptt
package may also help implement this functionality.
The documentation provides an example that shows adding a parent
attribute to the Group
auth model.
https://django-mptt.readthedocs.io/en/latest/models.html#registration-of-existing-models
import mptt
from mptt.fields import TreeForeignKey
from django.contrib.auth.models import Group
# add a parent foreign key
TreeForeignKey(Group, on_delete=models.CASCADE, blank=True, null=True).contribute_to_class(Group, 'parent')
mptt.register(Group, order_insertion_by=['name'])
👤JGC
Source:stackexchange.com