Context: For my first django site I am planning out my models and how I will represent the difference between a parent user and a kid user (basically–parents can add/manage children, children cannot). After doing some research, it seems that the best option will be to give parents custom permissions through a parent Group since the differences are small. (If you disagree, I would love to here what ideas you have.)
The default user model from contrib.auth has the flags is_staff and is_superuser. I am wondering, why have these separate flags when you could add the user to a group and check for permissions that way? My guess is that these flags must serve some purpose I am unaware of, or maybe they are redundant but there is something useful about it?
The reason I ask is that I am wondering whether I should add an is_parent and is_child flag to my user model. Alternatively, the way I understand them–I think I can use just groups. In fact, if the differences between parents and children are small, I suppose I could forget groups altogether (still figuring out how I am supposed to create these at deployment without using the admin page) and just add two or three custom permissions to a parent when I create them. Or what if there is just one custom permission called parent? (that’s a bad idea, right?)
I think my generic question can be boiled down to: when and why do you use Groups? when and why do you use boolean flags?