私は次のことをしたい:
- User django.auth クラスの get_absolute_url メソッドを変更したい。
どうやってやるの?
Django 1.5 以降を使用している場合は、カスタムモデルクラスget_absolute_url
でインスタンス メソッドを再定義できます。User
1.5 より前では、これを実現するための唯一の明確な方法は、パターンに従わない絶対 URL を構築するインスタンス メソッドを使用して、代わりに独自のプロキシ モデルを作成することでした。django.contrib.auth.models.User
get_aboslute_url
/users/%username%/
Django User クラスが必要に応じて適切である場合は、それを拡張できます。Django.Contrib.Authドキュメントから:
Django のデフォルト ユーザーの拡張
Django の User モデルに完全に満足していて、追加のプロファイル情報を追加したい場合は、単純に django.contrib.auth.models.AbstractUser をサブクラス化し、カスタム プロファイル フィールドを追加できます。このクラスは、デフォルトの User の完全な実装を抽象モデルとして提供します。
例えば:
from django.contrib.auth.models import AbstractUser
class MyUser(AbstractUser):
def get_absolute_url(self):
return '/somepath/user/%s/' % urlquote(self.username)
設定get_absolute_url
を使用してこのメソッドをオーバーライドできる場合ABSOLUTE_URL_OVERRIDES
ABSOLUTE_URL_OVERRIDES = {
'auth.user': lambda user: "/users/%s/" % user.username,
}
他のメソッドをオーバーライドするには、Django 1.5 で導入されたスワップ可能な User を使用する必要があります。