djangoでユーザ情報編集後にユーザページにリダイレクトする

環境

  • django 1.8.7
  • python 3.4.1

ユーザ情報を編集後にユーザページにリダイレクトしたい。

が、ユーザページはuser id に紐付いていてユーザごとにURIが違うようときがあります。

success_url = ~~ として適当にやってたんですが、ちょっとまじめにユーザページにリダイレクトしてみます。

なお、User はカスタムしたoriginal_auth を利用。User でも同様に行けるはず。

views を修正

// original_auth/views.py

 from django.views.generic.edit import UpdateView
 from original_auth.models import OriginalUser

 class OriginalUserUpdateView(UpdateView):
     model = OriginalUser
     # リダイレクトさせるurl を動的に変更させるため、success_url の行をコメントアウト。
     # models.py にて get_absolute_url 関数を定義する。 
     # success_url = "/"
     context_object_name = 'user_data'
     fields = '__all__'
     exclude = ['password']

models を修正

// original_auth/models.py

 from django.contrib.auth.models import AbstractUser,AbstractBaseUser,PermissionsMixin,UserManager

 class OriginalUser(AbstractBaseUser,PermissionsMixin):
     :
    # get_absolute_url を次のように追加する
    def get_absolute_url(self):
        return "/user/%i/" % self.id

参考 https://docs.djangoproject.com/en/dev/ref/models/instances/#get-absolute-url