Django -Registration-特定のグループへの新しいユーザー
-
27-10-2019 - |
質問
私は最新の製品でdjangoを使用しています(そして学習)しています、そして私はちょうどインストールして使用し始めました Django-Registration ユーザーが自動登録できるようにするアプリ。
すべてがうまく機能していますが、すべての新しいユーザーを特定のグループに割り当てることを考えています(すでに作成されています)。
これどうやってするの?このアプリに関するドキュメントはひどいです、IMO。
Django-Registrationアプリの使用を開始するモデルや構成を作成しませんでした。
解決
まず、私はDR(Django-Registration)の専門家ではなく、実際に質問で言及したために実際にチェックアウトしました。だから、他の誰かがより良い答えを持っているなら、それを提出してください。とにかく、ここに行きます。
ユーザー(またはDRが呼び出すように「プロファイル」が作成される方法)が作成されている方法が、登録.models.registrationmanagerにあるcreate_inactive_user関数にあることに気付きました。したがって、その後のこの関数では:
new_user.is_active = False
new_user.save()
次のようなものを追加できます。
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()
同じユーザー名で複数のユーザーを作成できるとは思わないので、get_or_createなしではおそらくできますが、申し訳ありませんが安全です。
この方法により、DRファイル(これは最善のことではないかもしれません)を編集し、特定のもの(デフォルトのグループ名など)のハードコードを作成しますが、オフポイントを踏むのに適しているはずです。
詩デフォルトのグループ名は、settings.pyファイルにある変数である可能性があります。これにより、よりアクセスしやすくてきれいになります。例:
settings.py:
DEFAULT_GROUP_NAME = 'YOUR GROUP NAME'
registration/models.py:
default_group = Group.objects.get(name=settings.DEFAULT_GROUP_NAME)
とにかく、それが役立つことを願っています。
他のヒント
これは私を夢中にさせていたので、私はこのためにフォークを作ることになりました。
https://github.com/kcunning/django-registration
基本的に、settings.pyファイルに次のものを追加します。
登録_DEFAULT_GROUP_NAME = "GroupName"
登録モジュールを介して追加されたユーザーは、作成時にそのグループが与えられます。