Это может сработать.Если количество ролей велико или динамично (как в ролях, можно добавлять, удалять, переименовывать, обновлять).Вы можете ввести троичное отношение, например:
django.contrib.auth import get_user_model
class Role(models.Model):
name = models.CharField(max_length=128)
class Team(models.Model):
name = models.CharField('Name', max_length=128)
members = models.ManyToManyField(get_user_model(), <b>through='Membership'</b>)
def __str__(self):
return self.name
class <b>Membership</b>(models.Model):
user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
team = models.ForeignKey(Team, on_delete=models.CASCADE)
role = models.ForeignKey(Role, on_delete=models.PROTECT)