无法解析关键字' is_active'进入现场?

时间:2018-06-13 20:44:13

标签: python django django-forms django-allauth

我的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中\站点包\ django的\芯\处理程序\ exception.py"   在内心     41. response = get_response(request)

     

文件" C:\ python3.6.3 \ lib \ site-packages \ django \ core \ handlers \ base.py"   在_get_response中     187. response = self.process_exception_by_middleware(e,request)

     

文件" C:\ python3.6.3 \ lib \ site-packages \ django \ core \ handlers \ base.py"   在_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"   在发货     88.返回处理程序(request,* args,** kwargs)

     

文件" C:\ python3.6.3 \ lib \ site-packages \ allauth \ account \ views.py"在   岗位     102. response = self.form_valid(form)

     

文件" C:\ python3.6.3 \ lib \ site-packages \ allauth \ account \ views.py"在   form_valid     639. form.save(self.request)

     

文件" C:\ python3.6.3 \ lib \ site-packages \ django \ contrib \ auth \ forms.py"   在保存     269.对于self.get_users(email)中的用户:

     

文件" C:\ python3.6.3 \ lib \ site-packages \ django \ contrib \ auth \ forms.py"   在get_users中     254.' is_active':是的,

     

文件" C:\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ manager.py"在   manager_method     85. return getattr(self.get_queryset(),name)(* args,** kwargs)

     

文件" C:\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ query.py"在   过滤     784. return self._filter_or_exclude(False,* args,** kwargs)

     

文件" C:\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ query.py"在   _filter_or_exclude     802. clone.query.add_q(Q(* args,** kwargs))

     

文件" C:\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ sql \ query.py"   在add_q中     1250. clause,_ = self._add_q(q_object,self.used_aliases)

     

文件" C:\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ sql \ query.py"   在_add_q中     1276. allow_joins = allow_joins,split_subq = split_subq,

     

文件" C:\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ sql \ query.py"   在build_filter中     1154. lookups,parts,reffed_expression = self.solve_lookup_type(arg)

     

文件" C:\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ sql \ query.py"   在solve_lookup_type中     1034. _,field,_,lookup_parts = self.names_to_path(lookup_splitted,self.get_meta())

     

文件" C:\ python3.6.3 \ lib \ site-packages \ django \ db \ models \ sql \ query.py"   在names_to_path中     1352."选择是:%s" %(名称,"," .join(可用)))

     

异常类型:/ password / reset / Exception值中的FieldError:不能   解决关键字' is_active'进入田野。选择是:个人资料,   Profile_id,active,admin,date_joined,email,emailaddress,   favorites_count,follower_count,followers,following_count,id,   last_login,logentry,password,points_count,questions_count,   socialaccount,员工,目标,用户名

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

1 个答案:

答案 0 :(得分:0)

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

<强> forms.py

class ResetPasswordForm(PasswordResetForm):

PasswordResetForm来自Auth而不是Allauth。知道了这个后,Allauth的班级名称被称为ResetPasswordForm,我的结果是:

class PasswordResetForm(ResetPasswordForm):

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