Django 1.5 пользовательские пользовательские модели Plus admin.autoDiscover () разбивает приложение -- python поле с участием django поле с участием django-admin поле с участием django-authentication пол Связанный проблема

Django 1.5 custom user model plus admin.autodiscover() breaks app


1
vote

проблема

русский

У меня есть пользовательская модель пользователей (на самом деле названа <код> null0 , поскольку я не видел никакой необходимости называть его в противном случае) в моем проекте Django 1.5C1 (в настоящее время работает на последнем из Django 1.5 ветвь на Github). <Код> null1 определен правильно в моих настройках, поэтому <код> null2 модуль работает правильно, и я могу входить в систему и т. Д. Fine.

Однако с включенным пользовательским пользовательским модулем включен, сайт администратора не работает. Когда я добавляю <код> null3 на мой <код> null4 , каждая страница на сайте (не просто страницы администратора) бросает <код> null5 исключение и говорит <код> null6 . Traceback показывает, что <код> null7 пытается вызвать <код> null8 , по-видимому, прежде чем он зарегистрировал эту модель.

Я пытался переименовать мою модель пользователя на что-то кроме null9 , но, похоже, не работает. Я также попробовал создать свой собственный <код> Future0 для этого приложения, а затем я попробовал вручную регистрацию моим пользовательским <код> Future1 модели Future2 код> Future3 перед <код> Future4 Ran, но на самом деле вызвало отдельное исключение, говорящее, что <код> Future5 уже зарегистрирован.

Что я должен попробовать дальше, чтобы получить <код> Future6 Работа?

Английский оригинал

I have a custom user model (it's actually named User as I didn't see any need to name it otherwise) in my Django 1.5c1 project (currently running on the latest from the Django 1.5 branch on github). AUTH_USER_MODEL is defined in my settings properly, so the auth module works correctly and I can log in etc. fine.

However, with the custom user module enabled, the admin site doesn't work. When I add admin.autodiscover() to my urls.py, every page on the site (not just admin pages) throws a NotRegistered exception and says The model User is not registered. The traceback shows that admin.autodiscover() is trying to call admin.site.unregister(User), apparently before it has registered that model.

I tried renaming my user model to something other than User, but it didn't seem to work. I also tried creating my own admin.py for that app, and then I tried manually registering my custom User model with the custom UserAdmin model specified in admin.py before admin.autodiscover() ran, but that actually caused a separate exception saying that User was already registered.

What should I try next in order to get admin.autodiscover() working?

</div
           

Список ответов

2
 
vote

Похоже, вам нужно перейти через несколько дополнительных обручей, если вы хотите, чтобы ваша пользовательская модель пользовательской работы с администратором. Из Документация :

... Ваша пользовательская модель должна определять некоторые дополнительные атрибуты и методы. Эти методы позволяют администратору контролировать доступ пользователя к администратору Содержание:

<Код> class models.CustomUser

<Код> is_staff true, если пользователю разрешено иметь доступ к сайту администратора.

<Код> is_active true, если учетная запись пользователя в настоящее время активна.

<Код> typedef void (__stdcall *LPFNTRACEPROC)(void* pUserData, const TCHAR* szTraceMsg); 0 true, если пользователь имеет название разрешение.

<Код> typedef void (__stdcall *LPFNTRACEPROC)(void* pUserData, const TCHAR* szTraceMsg); 1 true, если у пользователя есть Перми Для доступа к моделям в данном приложении.

 

It looks like you need to jump through a few extra hoops if you want your custom User model to work with the admin. From the documentation:

...your User model must define some additional attributes and methods. These methods allow the admin to control access of the User to admin content:

class models.CustomUser

is_staff True if the user is allowed to have access to the admin site.

is_active True if the user account is currently active.

has_perm(perm, obj=None) True if the user has the named permission.

has_module_perms(app_label) True if the user has perm to access models in the given app.

</div
 
 
1
 
vote
vote
Лучший ответ
 

Я настроил новый пустой проект с пользовательской моделью пользователя и попытался воссоздать ситуацию, которая привела к диагнозу: мы добавили typedef void (__stdcall *LPFNTRACEPROC)(void* pUserData, const TCHAR* szTraceMsg); 2 пакет в проект, который не был Обновлено для Django 1.5 и, по-видимому, конфликтует с пользовательскими моделями пользователей. Удаление этого пакета из установленных списка приложений в настройках разрешена проблема.

 

I set up a brand new empty project with a custom user model and attempted to recreate the situation, which led to a diagnosis: we had added the django-usertools package to the project, which has not been updated for Django 1.5 and apparently conflicts with custom user models. Removing that package from the installed apps list in settings resolved the issue.

</div
 
 

Связанный проблема

1  Запрос фильтра PostgreSQL SQLALCHEMY для списка строк JSONB  ( Postgresql sqlalchemy filter query for list of jsonb strings ) 
Пожалуйста, прости меня, как я новичок в SQLALCHEMY и еще новичок с PostgreSQL. У меня есть джин индексированный jsonb строковый столбец, который похож на н...

4  Django Добавление заполнителей в Django, построенные в формах входа в систему  ( Django adding placeholders to django built in login forms ) 
Я использую встроенный Django в логине Формы и я хочу добавить заполнители на имя пользователя и пароль. Мой шаблон: <код> <div class="form-group"> ...

0  Как можно включить против псевдонима в Pyqtgraph ImageView?  ( How can anti aliasing be enabled in a pyqtgraph imageview ) 
Я использую <код> pyqtgraph 's <код> ImageView widget, чтобы отобразить изображение, которое необходимо масштабировать в 1,25 до 1,5, чтобы быть удобным. Эт...

1  Вызов функции Python с параметрами из скрипта оболочки  ( Calling a python function with options from shell script ) 
У меня есть сценарий Python, который принимает различные варианты из командной строки e.g. -Runs с графическим интерфейсом <код> python myscript.py -gui...

4  Django на Dreamhost с пассажиром: нет ответа на браузеры, без ошибок  ( Django on dreamhost with passenger no response to browsers no error ) 
Я пытаюсь получить некоторое тривиальное Джанго, чтобы бежать на моей учетной записи Dreamhost. Я сделал свою домашнюю работу, прежде чем выбрать Dreamshost, ...

1  Мануупотация Python DataFrame  ( Python dataframe manupulation ) 
Я пытаюсь преобразовать ниже входной файл dataframe в выходной файл dataframe <Код> import pandas as pd data = {'Model1': [86,23,32,13,45,12], 'Mod...

0  Как умножить диагональные элементы друг другом, используя numpy?  ( How to multiply diagonal elements by each other using numpy ) 
Для целей этого упражнения давайте рассмотрим матрицу, где элемент <код> m_{i, j} дается правилом <код> m_{i, j} = i*j Если <код> i == j и <код > 0 else. ...

33  Argparse «Обязательные» необязательные аргументы  ( Argparse compulsory optional arguments ) 
argparse модуль имеет то, что называются «дополнительными» аргументами. Все аргументы, имя которого начинается с <код> - или <код> -- необязательно по умо...

1  Создание метода класса Python с использованием закрытия  ( Creating a python class method using a closure ) 
Я использую модуль unittest unittest module (как я довольно новый python), и я оказываюсь, что вы выполняете те же утверждения испытаний снова и снова. Я х...

2  По умолчанию пользователя в Django (стоимость Sentinel)  ( Default user in django sentinel value ) 
У меня есть модель: <код> class NotificationSettings(models.Model): android_device = models.ForeignKey( 'users.AndroidDevice', default=N...

52  Как пройти параметры функции при использовании timeit.timer ()  ( How to pass parameters of a function when using timeit timer ) 
Это план простая программа <код> # some pre-defined constants A = 1 B = 2 # function that does something critical def foo(num1, num2): # do something ...

32  Sklearn AgGlomerative Clustering Matrix Matrix  ( Sklearn agglomerative clustering linkage matrix ) 
Я пытаюсь нарисовать полную ссылку <Код> scipy.cluster.hierarchy.dendrogram , и я обнаружил, что <Код> scipy.cluster.hierarchy.linkage медленнее, чем <К...

2  Создание кафельной карты с блендером  ( Creating a tiled map with blender ) 
Я смотрю на создание плитки карты на основе 3D-модели, сделанной в Blender, карта 16 х 16 в блендере. У меня есть 4 разных уровня зума, и каждая плитка со...

2  Использование OpenPyXL для поиска ячейки в одном столбце, а затем для распечатки строки для этой соответствующей ячейки  ( Using openpyxl to search for a cell in one column and then to print out the row ) 
Например, я хочу иметь возможность вводить в мою программу через пользователь ввода данных, а затем распечатать ряд, относящуюся к этой ячейке. В идеале, если...

1  Как добавить несколько ценностей с одним ключом в Python Dict?  ( How to add multiple valuables with one key in python dict ) 
У меня есть список имен, и я пытаюсь добавить их под ключ под названием «Имя». <код> list_of_names = ['john', 'lisa', 'david', 'frans'] key = ['name'] с...

Связанный проблема

1  Запрос фильтра PostgreSQL SQLALCHEMY для списка строк JSONB 
4  Django Добавление заполнителей в Django, построенные в формах входа в систему 
0  Как можно включить против псевдонима в Pyqtgraph ImageView? 
1  Вызов функции Python с параметрами из скрипта оболочки 
4  Django на Dreamhost с пассажиром: нет ответа на браузеры, без ошибок 
1  Мануупотация Python DataFrame 
0  Как умножить диагональные элементы друг другом, используя numpy? 
33  Argparse «Обязательные» необязательные аргументы 
1  Создание метода класса Python с использованием закрытия 
2  По умолчанию пользователя в Django (стоимость Sentinel) 
52  Как пройти параметры функции при использовании timeit.timer () 
32  Sklearn AgGlomerative Clustering Matrix Matrix 
2  Создание кафельной карты с блендером 
2  Использование OpenPyXL для поиска ячейки в одном столбце, а затем для распечатки строки для этой соответствующей ячейки 
1  Как добавить несколько ценностей с одним ключом в Python Dict?