I actually thought about it, but when you're doing

```
        site_group.pk = None
        site_group.save()
```

you're cloning the object in the database, but the in-memory object is STILL the same.

A proper ```clone_group``` method would be one that takes a group as argument and returns a new group object (DIFFERENT from the argument).

The implementation would be:
```
def clone_group(group):
    old_pk = group.pk
    group.pk = None
    group.save()
    new_group = Group.objects.get(pk=group.pk)
    group.pk = old_pk
    return new_group
```

This works, but it's an extra db query for actually getting a new in-memory obj.