首页 > 解决方案 > 如何使用 django_rest_auth 和 django rest 框架为新用户创建会员记录

问题描述

我正在尝试使用 Django Rest Framework 和 Django Rest Auth 创建邀请/接受工作流。

我的初始帐户创建工作正常。然后用户创建一个团队,没问题。该所有者现在发送邀请。凉爽的。电子邮件发送出去,受邀者收到一封电子邮件,其中包含他们被邀请加入的团队的 ID。

这就是我挣扎的地方。有一个连接团队和成员的会员模型。当用户被邀请注册时,我想创建该会员记录。

那么,我该把会员创建方法放在哪里呢?是在serializer还是在view

Django Rest AuthRegistrationView调用RegistrationSerializer here的 save 方法。serializer将创建的返回user视图以获取响应。

我知道我需要在创建用户之后创建会员记录,否则没有用户可以添加到会员中。

但我不知道在哪里做这个?

我正在考虑创建一个在方法运行create_membership后触发的create方法,但这不起作用。

像这样的东西:

def create_membership(self):
    team = "6edb0a55-199a-4aae-aa40-e7313186136b"
    return Membership.objects.create(team__id=team, member=self.user)

然后像这样调用它(这修改了RegistrationView的create方法)

def create(self, request, *args, **kwargs):
    serializer = self.get_serializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    user = self.perform_create(serializer)
    member = self.create_membership()
    headers = self.get_success_headers(serializer.data)

    return Response(self.get_response_data(user),
                    status=status.HTTP_201_CREATED,
                    headers=headers)

但是,这也不起作用。也许我在想这一切都是错的?也许需要在序列化程序上声明成员资格。

会喜欢一些建议。谢谢!

标签: djangodjango-rest-frameworkdjango-viewsdjango-rest-auth

解决方案


推荐阅读