Django allauth具有多个剖面模型

Django allauth具有多个剖面模型,django,django-allauth,Django,Django Allauth,我有一个django项目,其中有多个概要文件模型,每个模型都有用户模型的外键。它使用django allauth进行注册 当前,当使用社交帐户注册时,用户注册,创建用户和社交帐户,然后根据用户先前选择的配置文件类型,将用户重定向到要填写的表单,填写后,该表单是创建的正确配置文件类型 如果用户、socialaccount和配置文件类型实例是在同一步骤中创建的,也就是在用户填写配置文件特定的表单之后创建的,那么我希望这样做。我是否可以在不更改allauth的代码的情况下执行此操作?通过修改allau

我有一个django项目,其中有多个概要文件模型,每个模型都有用户模型的外键。它使用
django allauth
进行注册

当前,当使用社交帐户注册时,用户注册,创建用户和社交帐户,然后根据用户先前选择的配置文件类型,将用户重定向到要填写的表单,填写后,该表单是创建的正确配置文件类型

如果用户、socialaccount和配置文件类型实例是在同一步骤中创建的,也就是在用户填写配置文件特定的表单之后创建的,那么我希望这样做。我是否可以在不更改allauth的代码的情况下执行此操作?通过修改allauth来做到这一点并不难,但如果可以的话,我宁愿不维护第三方应用程序的自定义副本


无法使用自定义适配器,因为它无权访问请求。

请查看
allauth.account.signals.user\u signed\u signed\u
信号,该信号在用户(社交或普通)注册后立即触发。您可以在那里使用您的帐户完成您的工作:

from django.dispatch import receiver
from allauth.account.signals import user_signed_up

@receiver(user_signed_up)
def do_stuff_after_sign_up(sender, **kwargs):
    request = kwargs['request']
    user = kwargs['user']
    # Do your stuff with the user
    user.save()
发件人:

要了解如何在django中使用信号,请阅读

我希望它能帮助你

编辑 我很高兴你找到了解决问题的方法,但由于中间件总是被加载的,我建议使用我建议的方法。来自django allauth的
socialaccount
模块也提供了。其中,您可以找到添加的
allauth.socialaccount.signals.social\u账户

# Sent after a user connects a social account to a his local account.
social_account_added = Signal(providing_args=["request", "sociallogin"])

使用类似于前面编写的处理程序,您可以检查用户模型中的必填字段,然后调用快捷方式,或者返回一个对象,该对象重定向到显示/处理表单的视图。

如果答案令人满意,则接受它会有所帮助。如果没有,请评论,这样我们才能找到正确的答案。哦,对不起。我一直有点忙,对答案的回复从我的脑海中溜走了。这对我们不起作用,因为我们需要用户在社交注册后填写表单。我们所做的是创建一个自定义中间件,将任何未填写表单的用户重定向到表单页面。@elssar:我编辑了答案,希望它有用。谢谢你的编辑。将用户重定向到适当的表单不是问题。问题是如果他们不填写表格会发生什么。他们仍然可以登录并浏览网站。我们不希望配置文件不完整的用户这样做。这就证明加载中间件是合理的。在这种情况下,我也会使用您的方法。@elssar您介意共享您的自定义中间件吗?我们遇到了同样的问题(多个配置文件模型),希望看到您是如何做到这一点的。谢谢
# Sent after a user connects a social account to a his local account.
social_account_added = Signal(providing_args=["request", "sociallogin"])