문제

I'm using (and learning) Django on my newest product, and I just installed and started using django-registration app to allow my users to auto-register themselves.

Everything's working good, but I'm thinking about assigning every new user to a specific group (already created), so I can "separate" the admins from the normal users.

How can I do this? The documentation about this app is awful, IMO.

I didn't create any model or configuration to start using the django-registration app.

도움이 되었습니까?

해결책

To start, I'm not an expert at d-r (django-registration) and actually only checked it out because you mentioned it in your question. So, if anyone else has a better answer please submit it. Anyway, here it goes.

I noticed that the way users (or "profiles" as d-r calls them) are created is found in the create_inactive_user function located in registration.models.RegistrationManager. So, in this function after:

new_user.is_active = False
new_user.save()

You could add something like:

default_group = Group.objects.get(name=WHATEVER_THE_GROUP_NAME_IS)
user_group, is_created = UserGroup.get_or_create(user=new_user)
user_group.group = default_group
#user_group.groups.add(default_group)   # Django ver. 1.7+
user_group.save()

You could probably do without the get_or_create as I don't think you can create more than one user with the same username, but I would rather be safe than sorry.

This method will cause you to edit the d-r files (which may not be the best thing to do) along with hardcoding certain things (such as the default group name), but it should be a good stepping off point.

PS. the default group name could be a variable located in the settings.py file, which would make it more accessible and pretty. Example:

settings.py:
DEFAULT_GROUP_NAME = 'YOUR GROUP NAME'

registration/models.py:
default_group = Group.objects.get(name=settings.DEFAULT_GROUP_NAME)

Anyway, hope that helps.

다른 팁

I ended up making a fork for this, as this was driving me crazy.

https://github.com/kcunning/django-registration

Basically, add the following to your settings.py file:

REGISTRATION_DEFAULT_GROUP_NAME="Groupname"

Any user added through the registration module will be given that group upon creation.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top