システムに新しいユーザーを登録するために、Django 1.9 で Django Rest Auth を使用しています。また、このプロセスで追加のコードを実行して、追加のデータを別のテーブルに保存する必要があります。
誰もがそれを行うための最良の方法を知っていますか?
システムに新しいユーザーを登録するために、Django 1.9 で Django Rest Auth を使用しています。また、このプロセスで追加のコードを実行して、追加のデータを別のテーブルに保存する必要があります。
誰もがそれを行うための最良の方法を知っていますか?
CustomRegisterSerializerを記述し、 settings.pyファイルに追加します。
REST_AUTH_REGISTER_SERIALIZERS = {
"REGISTER_SERIALIZER":"common_app.serializers.CustomRegisterSerializer"
}
新しく作成したシリアライザーの save() メソッドを記述し、追加の実行コードを追加します。
ユーザー モデルに余分なフィールドがある場合は、validate_fieldメソッドを記述できます。
参考までに、ここでrest_auth RegistrationSerializerを確認できますhttps://github.com/Tivix/django-rest-auth/blob/master/rest_auth/registration/serializers.py
これが役立つことを願っています。
上記の@ashish2pyの返信に同意します:
ただし、他の参照用にカスタムシリアライザーの保存メソッドの例を追加したい。
手順:
settings.py ファイルで、以下の行を追加します。(アプリ名が「common_app」であると仮定)
REST_AUTH_REGISTER_SERIALIZERS = {
"REGISTER_SERIALIZER":"common_app.serializers.CustomRegisterSerializer"
}
common_app/serializer.py ファイルに、以下のように CustomRegisterSerializer クラスを追加します (save メソッドをオーバーライドします)。
class CustomRegisterSerializer(RegisterSerializer):
def save(self, request):
user = super(CustomRegisterSerializer, self).save(request)
logger.debug("[GroupProfile-Manager] Manager user registration #{}: {}".format(user.id, user.email))
### YOUR CUSTOM LOGIC GOES HERE ###
group_prof_obj.join(user=user, role='manager')
return user