Django - 获得用户的联系许可

Django - Getting contact permission from users

在我的注册表单上,我询问用户是否可以通过电子邮件或短信与他们联系。

我正在使用 Django-Allauth,它似​​乎没有将其列为选项。我正在对视图进行子类化并试图将其潜入其中:

class ListenSignupView(SignupView):
    template_name = 'listen_signup.html'

    def form_valid(self, form):
        form.allows_contact = self.request.POST.get('allows_contact')
        return super(ListenSignupView, self).form_valid(form)

但是,它实际上并没有将结果保存给用户。我还需要对表单进行子类化吗?完成此操作的最简单方法是什么?

事实证明,覆盖表单非常简单:

from allauth.account.forms import SignupForm


class CustomSignupForm(SignupForm):

    def save(self, request):
        user = super(CustomSignupForm, self).save(request)
        user_input = request.POST.get('allows_contact')
        user.allows_contact = True if user_input == "on" else False
        user.save()
        return user

这可以用于任何 allauth 的表单。 Here are the relevant docs,供参考。