1

我一直在编写一个 Django webapp,对我的 User 模型没有太多关注——提供的模型很好,但我意识到我希望能够以某种方式对其进行自定义。

从头开始使用自定义用户模型看起来很简单,但是在保留现有用户的同时迁移到一个有点棘手,并且给我带来了很多问题。我发现本指南使用了一个特殊的包,并针对我的具体情况提供了分步说明(Django 1.8、Python 3.4)。

准备步骤之一是

您必须确保在您的项目(包括 3rd 方库)的任何地方都使用 AUTH_USER_MODEL 和 django.contrib.auth.get_user_model() 而不是“auth.User”和 django.contrib.auth.models.User。

我的项目不是很复杂——对 User 模型的唯一引用是在 ForeignKeys 以及几行获取 User 对象。

我应该在哪里使用 django.contrib.auth.get_user_model()?我的印象是 ForeignKeys 需要使用 settings.AUTH_USER_MODEL 和任何运行时操作(例如obj = User.objects.get(<criteria>)将设置Userget_user_model(). 对吗?

我目前有我的 AUTH_USER_MODEL 设置,例如:

AUTH_USER_MODEL = User

作为中间步骤,django.contrib.auth.models.Usersettings.py.

我试图切换我的模型以使用该设置:

class League(models.Model):
  name = models.CharField(max_length=100)
  users = models.ManyToManyField(settings.AUTH_USER_MODEL)

但是,当我启动服务器时,我不断收到关于settings.py

    raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.

我在这里做错了什么?SECRET_KEY 设置不为空,所以我认为设置中存在不同的错误。

4

1 回答 1

3

在从默认用户切换到自定义用户的过程中,您现在处于什么位置有点不清楚,但就像文档在这里所说的那样,您AUTH_USER_MODEL应该设置如下:

AUTH_USER_MODEL = 'auth.User'

作为字符串,不直接导入模型。 'auth.User'是默认设置,因此如果您想在代码中使用默认用户,只需像这样设置它,当您准备好切换它时,将其更改为任何应用程序名称和型号:'my_app.CustomUser'

您收到SECRET_KEY错误是因为您尝试在 settings.py. 的顶部导入 django.contrib.auth.models.User,因此它在设置文件之前导入了 django 库的其他部分,但设置文件应该先加载。

于 2016-02-19T18:11:56.057 回答