26

django.contrib.authDjangoの組み込みモジュールのいくつかの小さな詳細を変更したいと思います。具体的には、ユーザー名をメールフィールドにする(そして別のメールアドレスをメールで送信する)別のフォームが必要です(auth必要以上に変更したくないので、フォームを変更するだけで十分なようです)。

autodiscoverカスタマイズされたModelAdminもので使用すると、独自の管理インターフェイスとauth競合しauth、「登録済み」エラーが発生します。

すべてのモデルを列挙して、独自の管理サイトを作成する必要があるようです。たった18クラスですが、DRYの問題のようです。すべての変更には、モデルの追加とカスタマイズされた管理サイトへの追加の両方が必要です。

または、基本的にすべてのモジュールをautodiscoverインポートするために、「除外付き」の独自のバージョンを作成する必要がありますか?admin auth

4

2 に答える 2

53

上記のどれでもない。admin.site.unregister()を使用するだけです。これが私が最近adminのis_activeにフィルタリングユーザーを追加した方法です(nb is_activeフィルタリングはDjangoコアのデフォルトでUserモデルにあります;例としてここでも機能します)、すべてのDRYは次のようになります:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

class MyUserAdmin(UserAdmin):
    list_filter = UserAdmin.list_filter + ('is_active',)

admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
于 2009-01-23T02:22:18.473 に答える
2

カスタム認証バックエンドでこれを行う方が簡単で、カスタマイズされた ModelAdmin の必要性がなくなると思います。

このスニペットで同様のことを行いました: http://www.djangosnippets.org/snippets/74/

于 2009-01-23T11:30:25.947 に答える