I\'m trying to do something simple like this:
members = models.ManyToManyField(User, blank=True, null=True, unique=True)
but unique isn\'t
For one, I wouldn't use num_members. Instead, you can check how many members there are with mygroup.members.count(). Secondly, adding members more than once doesn't really add them more than once, so you're fine.
A ManyToManyField on Group for member pointing to User is implemented with a separate table (something like group_group_users) which has a foreign key to Group and User. A user can have multiple groups, and a group can have multiple users, but there can't be two rows in group_group_users for the same relationship (ie, unique together foreign keys).
Usage:
>>> group = Group.objects.get(pk=1)
>>> user = User.objects.get(pk=1)
>>> group.members.add(user)
>>> # Worked fine as expected. Let's check the results.
>>> group.members.all()
[]
>>> group.members.add(user)
>>> # Worked fine again. Let's check for duplicates.
>>> group.members.all()
[]
>>> # Worked fine.