Django 1.5自定义用户模型加上admin.autodiscover()打破了应用程序

时间:2013-02-19 02:28:11

标签: python django django-admin django-authentication

我的Django 1.5c1项目中有一个自定义用户模型(它实际上名为User,因为我没有看到任何需要命名)(目前在github上运行最新的Django 1.5分支) )。 AUTH_USER_MODEL已在我的设置中正确定义,因此auth模块正常工作,我可以登录等。

但是,启用自定义用户模块后,管理站点将无法运行。当我向admin.autodiscover()添加urls.py时,网站上的每个网页(不仅仅是管理页面)都会引发NotRegistered例外并说The model User is not registered。追溯显示admin.autodiscover()正在尝试调用admin.site.unregister(User),显然是在注册该模型之前。

我尝试将我的用户模型重命名为User以外的其他内容,但似乎无效。我还尝试为该应用创建自己的admin.py,然后尝试使用User中指定的自定义UserAdmin模型手动注册我的自定义admin.py模型{{1}运行,但这实际上引起了一个单独的异常,说admin.autodiscover()已经注册。

我应该尝试下一步才能让User正常工作?

2 个答案:

答案 0 :(得分:2)

如果您希望自定义用户模型与管理员一起工作,您似乎需要跳过一些额外的箍。来自documentation

  

...您的用户模型必须定义一些其他属性和方法。   这些方法允许管理员控制用户对管理员的访问   含量:

     

class models.CustomUser

     
    

is_staff如果允许用户访问管理站点,则为真。

         

is_active如果用户帐户当前处于活动状态,则为True。

         

has_perm(perm, obj=None)如果用户具有名称,则为真     权限。

         

has_module_perms(app_label)如果用户有烫发,则为真     访问给定应用程序中的模型。

  

答案 1 :(得分:1)

我使用自定义用户模型设置了一个全新的空项目并试图重新创建情况,从而导致诊断:我们已将django-usertools包添加到项目中,该项目尚未针对Django进行更新1.5并且显然与自定义用户模型冲突。从设置中已安装的应用列表中删除该软件包解决了该问题。