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

Cannot resolve keyword 'is_active' into field?

我的项目中包含了 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"})

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

Traceback:

File "C:\python3.6.3\lib\site-packages\django\core\handlers\exception.py" in inner 41. response = get_response(request)

File "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)

File "C:\python3.6.3\lib\site-packages\django\views\generic\base.py" in view 68. return self.dispatch(request, *args, **kwargs)

File "C:\python3.6.3\lib\site-packages\django\views\generic\base.py" in dispatch 88. return handler(request, *args, **kwargs)

File "C:\python3.6.3\lib\site-packages\allauth\account\views.py" in post 102. 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. for user in self.get_users(email):

File "C:\python3.6.3\lib\site-packages\django\contrib\auth\forms.py" in get_users 254. 'is_active': True,

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

File "C:\python3.6.3\lib\site-packages\django\db\models\query.py" in filter 784. return self._filter_or_exclude(False, *args, **kwargs)

File "C:\python3.6.3\lib\site-packages\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" in add_q 1250. clause, _ = self._add_q(q_object, self.used_aliases)

File "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)

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

File "C:\python3.6.3\lib\site-packages\django\db\models\sql\query.py" in names_to_path 1352. "Choices are: %s" % (name, ", ".join(available)))

Exception Type: FieldError at /password/reset/ Exception Value: Cannot resolve keyword 'is_active' into field. Choices are: Profile, 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, staff, targets, username

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

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

forms.py

class ResetPasswordForm(PasswordResetForm):

PasswordResetForm 来自 Auth 而不是 Allauth。 Allauth的class名字叫:ResetPasswordForm 知道后,我的结果是这样的:

class PasswordResetForm(ResetPasswordForm):

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