【问题标题】:Cannot resolve keyword 'is_active' into field?无法将关键字“is_active”解析为字段?
【发布时间】:2018-11-23 13:15:57
【问题描述】:

我的项目中包含了 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” 在 _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. return self.dispatch(request, *args, **kwargs)

文件“C:\python3.6.3\lib\site-packages\django\views\generic\base.py” 在调度中 88. return handler(request, *args, **kwargs)

文件“C:\python3.6.3\lib\site-packages\allauth\account\views.py”在 邮政 102. 响应 = 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. 子句,_ = 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. 查找,部分,refed_expression = self.solve_lookup_type(arg)

文件“C:\python3.6.3\lib\site-packages\django\db\models\sql\query.py” 在solve_lookup_type 1034._,字段,_,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" % (name, ", ".join(available)))

异常类型:/password/reset/ 处的 FieldError 异常值:不能 将关键字“is_active”解析为字段。选项有:简介、 Profile_id,活动,管理员,date_joined,电子邮件,电子邮件地址, 最爱计数,追随者计数,追随者,追随者计数,ID, last_login, logentry, 密码, points_count, questions_count, 社交账号、员工、目标、用户名

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

【问题讨论】:

标签: python django django-forms django-allauth


【解决方案1】:

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

forms.py

class ResetPasswordForm(PasswordResetForm):

PasswordResetForm 来自 Auth 而不是 Allauth。 Allauth 的类名叫做:ResetPasswordForm 知道这个之后,我的结果是这样的:

class PasswordResetForm(ResetPasswordForm):

它现在可以正常工作并且不会给我那个错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 2013-10-09
    • 2019-05-26
    相关资源
    最近更新 更多