Джанго пользовательские админ.сайт.Регистрация + админ.сайт.отменить противоречивые AlreadyRegistered + NotRegistered на 1-й HTTP-запрос GET (Апач + мод тут WSGI)



Во время 1-го HTTP GET (сразу после перезагрузки WSGI в демоническом режиме), admin.сайт.unregister создает не зарегистрированное исключение, но admin.сайт.register выдает уже зарегистрированное исключение (catch-22?) Однако, на последующих http получает, все загружается просто отлично без ошибок.



Настройка:




  • Django 1.3

  • Apache 2.2

  • CentOS


Settings.py:



INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
#'django.contrib.sites', #(this didn't seem to make a difference)
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
'django.contrib.admindocs',
'base',
'sample',
'reports',
'south',
)


Models.py:



from django.db import models
from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin as AuthUserAdmin

class Company(models.Model):
name = models.CharField(max_length=256)

class CompanyUser(models.Model):
company = models.ForeignKey(Company)
user = models.OneToOneField(User)

class CompanyUserInline(admin.StackedInline):
model = CompanyUser
max_num = 1
can_delete = False

class CompanyUserAdmin(AuthUserAdmin):
inlines = [ CompanyUserInline ]

# STUCK HERE !!
try:
admin.site.unregister(User)
# throws NotRegistered at / The model User is not registered
except:
admin.site.register(User, CompanyUserAdmin)
# throws AlreadyRegistered at / The model User is already registered
758   2  

2 ответов:

Я нашел ответ от млавина на freenode #django

Вы определяете это в своем models.py скорее, чем admin.py (что является отлично) но если у вас есть какое-либо место в коде, которое делает импорт * on что моделирует файл он будет выполнять регистр вызовов снова

Перемещение того, что принадлежит admin.py чтобы admin.py (от models.py) решил ее! В свою защиту, однако, я унаследовал кодовую базу - я не уверен, почему я бы поместил этот фрагмент в models.py вместо того, чтобы admin.py.

Интересно отметить: в то время как эта проблема никогда не возникала локально для меня через "manage.py runserver" но только когда я развернул через Apache + WSGI, еще один человек упомянул, что они смогли воспроизвести его локально. Странный.

Но дело закрыто.

Моей проблемой было:

Я хочу изменить в пользователей(например: добавить Mobile) с Мой_логин(AbstarctUser) пользовательские модели(в model.py) и в моем admin.py файл сценария сначала отменить регистрацию мою модель myuser и потом зарегистрировать его, но Джанго не зарегистрировать пользовательские Мой_логин модель по умолчанию,

Так что в моем случае нет необходимости отменять регистрацию моего пользовательского модуля, достаточно просто зарегистрироваться.

Comments

    Ничего не найдено.