1

我在我的 Django 1.5c1 项目(目前在 github 上的 Django 1.5 分支的最新版本上运行)中有一个自定义用户模型(实际上是这样命名User的,因为我没有看到任何需要以其他方式命名它)。 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的自定义模型手动注册我的自定义模型,但这实际上导致了一个单独的异常,说明已经注册。UserAdminadmin.pyadmin.autodiscover()User

为了开始admin.autodiscover()工作,我接下来应该尝试什么?

4

2 回答 2

2

如果您希望自定义用户模型与管理员一起使用,您似乎需要跳过一些额外的障碍。从文档中:

...您的用户模型必须定义一些额外的属性和方法。这些方法允许管理员控制用户对管理员内容的访问:

class models.CustomUser

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

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

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

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

于 2013-03-11T04:34:07.503 回答
1

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

于 2013-02-19T18:35:00.487 回答