На самом деле я должен отметить, что это был не мой фрагмент.

у изменить несколько мелких деталей встроенного в Djangodjango.contrib.auth модуль. В частности, я хочу другую форму, которая делает имя пользователя полем электронной почты (и отправляет по электронной почте альтернативный адрес электронной почты. (Я бы не хотел изменятьauth больше чем нужно - простая смена формыкажется быть всем, что нужно.)

Когда я используюautodiscover с настроеннымModelAdmin заauth Я конфликтую сauthсобственный интерфейс администратора и выдает ошибку "уже зарегистрирован".

Похоже, я должен создать свой собственный сайт администратора, перечисляя все мои модели. Это только 18 классов, но это похоже на проблему СУХОГО - каждое изменение требует как добавления в модельа также добавление к настроенному админу сайта.

Или я должен написать свою собственную версию "autodiscover с исключением "по существу импортировать всеadmin модулиКроме auth?

Ответы на вопрос(2)

что это может быть проще сделать с помощью пользовательского аутентификационного бэкэнда и, таким образом, устранить необходимость в настраиваемом ModelAdmin.

Я сделал нечто похожее с этим фрагментом:http://www.djangosnippets.org/snippets/74/

 Andy Baker23 янв. 2009 г., 13:53
На самом деле я должен отметить, что это был не мой фрагмент.
 S.Lott23 янв. 2009 г., 12:34
На самом деле, мне нужен как улучшенный бэкэнд, так и внешний интерфейс. Мне нужно, чтобы имена пользователей были адресами электронной почты, чтобы "@domain" гарантировал их уникальность. Я уже использую твой фрагмент. Но это помогает иметь его как часть этого набора ответов.
Решение Вопроса

(). Вот как я недавно добавил фильтрацию пользователей по is_active в админке (нотабене Фильтр is_active теперь включен в модель User по умолчанию в ядре Django; все еще работает здесь как пример) все СУХОЕ как можно:

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)
 ayaz23 янв. 2009 г., 07:17
Интересно. Спасибо, что поделился, Карл.
 Carl Meyer04 мая 2014 г., 03:41
@thumbtackthief Поскольку Django не позволит вам зарегистрировать одну и ту же модель дважды, а пользователь уже зарегистрирован в contrib.auth с его классом UserAdmin. Поэтому вам необходимо отменить его регистрацию, прежде чем вы сможете зарегистрировать его в своем подклассе ModelAdmin.
 Carl Meyer25 авг. 2009 г., 17:27
@Brandon Да, в общем случае автообнаружение admin.py в Django не очень хорошо подходит для автоматической перезагрузки сервера dev. Это также укусит вас, если у вас есть синтаксическая ошибка в admin.py; после того, как вы исправите это, ошибка исчезнет, но это приложение будет полностью отсутствовать у администратора, пока вы не перезапустите сервер dev вручную. Раздражает, но я еще не закопался, чтобы найти ошибку.
 S.Lott23 янв. 2009 г., 03:29
Sweet - полностью пропустил незарегистрированный метод вsites.AdminSite
 Brandon Rhodes24 авг. 2009 г., 04:19
Я отмечаю, что после добавления этого вызова unregister () в мой код мне пришлось вручную убить и перезапустить сервер разработки, прежде чем Django «увидел» сделанные мной изменения. Что заставило меня потратить 15 минут, пытаясь выяснить, почему не работает unregister (). Что в конечном итоге привело меня к этому вопросу переполнения стека, где я обнаружил, что то, что я делалбыл должен работать. :-)

Ваш ответ на вопрос