首页 文章

无法将关键字'is_active'解析为字段?

提问于
浏览
0

我将Django allauth 包包含在我的项目中 . 我正在尝试使用自定义表单创建重置密码页面的自定义视图 . 这就是我所拥有的:

urls.py

urlpatterns = [
    url(r'^password/reset/$', views.ResetPasswordView.as_view(), name='password-reset'),
]

views.py

class ResetPasswordView(PasswordResetView):
    template_name = 'account/password-reset.html'
    form_class = ResetPasswordForm

forms.py

class ResetPasswordForm(PasswordResetForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['email'].label = ""
        self.fields['email'].widget = forms.EmailInput(attrs={"placeholder": "Email Address"})

但是,由于某种原因,当我输入电子邮件地址重置密码时,我收到以下错误:

回溯:文件“C:\ python3.6.3 \ lib \ site-packages \ django \ core \ handlers \ exception.py”在内部41. response = get_response(request)文件“C:\ python3.6.3 \ lib \ site -packages \ django \ core \ handlers \ base.py“in _get_response 187. response = self.process_exception_by_middleware(e,request)File”C:\ python3.6.3 \ lib \ site-packages \ django \ core \ handlers \ base . py“in _get_response 185. response = wrapped_callback(request,* callback_args,** callback_kwargs)文件”C:\ python3.6.3 \ lib \ site-packages \ django \ views \ generic \ base.py“在视图68中 . 返回self .dispatch(request,* args,** kwargs)文件“C:\ python3.6.3 \ lib \ site-packages \ django \ views \ generic \ base.py”在dispatch 88中 . 返回处理程序(request,* args,* * kwargs)在帖子102中输入文件“C:\ python3.6.3 \ lib \ site-packages \ allauth \ account \ views.py”.response = self.form_valid(form)File“C:\ python3.6.3 \ lib \ site -packages \ allauth \ account \ views.py“in form_valid 639. form.save(self.request)File”C:\ python3.6.3 \ lib \ site-packages \ django \ contrib \ auth \ forms.py“in save 269 . 对于self.get_users(email)中的用户:get_users中的文件“C:\ python3.6.3 \ lib \ site-packages \ django \ contrib \ auth \ forms.py” . 'is_active':True,文件“C:在manager_method 85中的\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ manager.py“ . 返回getattr(self.get_queryset(),name)(* args,** kwargs)文件”C:\ python3过滤器784中的.6.3 \ lib \ site-packages \ django \ db \ models \ query.py“ . 返回self._filter_or_exclude(False,* args,** kwargs)文件”C:\ python3.6.3 \ lib \ site- package \ django \ db \ models \ query.py“in filter_or_exclude 802. clone.query.add_q(Q(* args,** kwargs))File”C:\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ sql \ query.py“在add_q 1250.子句中, = self._add_q(q_object,self.used_aliases)文件”C:\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ sql \ query.py“in _add_q 1276. allow_joins = allow_joins,split_subq = split_subq,File”C:\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ sql \ query.py“in build_filter 1154. lookups,parts ,reffed_expression = self.solve_lookup_type(arg)文件“C:\ pyth在solve_lookup_type 1034中的on3.6.3 \ lib \ site-packages \ django \ db \ models \ sql \ query.py“ . ,field,,lookup_parts = self.names_to_path(lookup_splitted,self.get_meta())File”C:在names_to_path 1352中的\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ sql \ query.py“ . 选项为:%s”%(name,“,” . join(available)))异常类型:/ password / reset / Exception值中的FieldError:无法将关键字“is_active”解析为字段 . 选择包括: Profiles , Profiles ID,活动,管理员,日期_加入,电子邮件,电子邮件地址,收件人_帐户,关注者帐户,关注者,关注帐户,帐号,最后一次登录,密码,密码,点数帐户,问题帐户,社会帐户,员工,目标,用户名

当我从视图中删除form_class并使用默认表单时,它可以正常工作 . 添加自定义表单时为什么不起作用?

1 回答

  • 0

    我终于弄明白了 . 产生这种错误的原因是因为我继承自Auth而不是Allauth表格 .

    forms.py

    class ResetPasswordForm(PasswordResetForm):
    

    PasswordResetForm 来自Auth,而不是Allauth . Allauth的 class 名称被称为: ResetPasswordForm ,知道这一点后,我的结果如下:

    class PasswordResetForm(ResetPasswordForm):
    

    它现在正常工作,并没有给我这个错误 .

相关问题