2017-12-18 7 views
0

私はdjangoプロジェクトで作業していますが、AbstractUserモデルを使用してデフォルトのdjangoユーザーモデルを従業員のモデルに変更しました。リダイレクト時にDjangoがパターン名を見つけることができません

今最初のログイン時に、私はEmployeeAdmin - get_urlsメソッドで定義されているURLのパスワードページを変更するために従業員をリダイレクトする必要があります。

:私は、ユーザーの最初のログインのためのチェック

admin.py

class MyAdminSite(AdminSite): 
    login_form = AdminLoginForm 


admin_site = HRMSAdminSite(name='My-admin') 


@admin.register(Employee, site=admin_site) 
class EmployeeAdmin(admin.ModelAdmin): 
    def get_urls(self): 
     return [ 
      path(
       '<id>/password/', 
       self.admin_site.admin_view(self.user_change_password), 
       name='auth_user_password_change', 
      ), 
     ] + super().get_urls() 

    def user_change_password(self, request, id, form_url=''): 
     pass 

そして、私のAdminLoginForm上:また、私は、以下のようにデフォルトのAdminSiteを上書きしなければならなかったデフォルトのログイン動作を無効にするにはしかし

forms.py

class AdminLoginForm(AuthenticationForm): 

    def confirm_login_allowed(self, user): 
     # user.last_login is blank if this is first login for this user 
     if not user.last_login: 
      return redirect('auth_user_password_change') 

、Aを実行していますエラーコード:

'auth_user_password_change'のリバースが見つかりません。 'auth_user_password_change'は有効なビュー関数またはパターン名ではありません。

djangoがEmployeeAdminのget_urls()メソッドで定義された名前付きURLを見つけることができない理由はわかりません。

答えて

1

モデル管理クラスにURLを追加するので、それを逆にするにはadmin名前空間を含める必要があります。

return redirect('admin:auth_user_password_change') 
関連する問題