Django:在哪里可以查询管理员设置的auth用户模型?

Django:在哪里可以查询管理员设置的auth用户模型?,django,Django,我正在尝试设置电子邮件和管理员设置,并希望查询用户模型以获取电子邮件地址和其他电子邮件凭据,这样我就不必向git hub上的所有人提供这些信息。如果我将以下内容放在设置文件的末尾(定义数据库后): 我得到了一个成功的查询,服务器启动,但当我尝试启动应用程序时,由于缺少设置,会出现各种错误,具体取决于我在设置文件中放置上述代码的位置 由此我推断,您无法在设置文件中查询数据库,因此我可以将此代码放在何处,以便在服务器启动时填充管理员设置和电子邮件设置变量?我建议您不要在settings.py中使用d

我正在尝试设置电子邮件和管理员设置,并希望查询用户模型以获取电子邮件地址和其他电子邮件凭据,这样我就不必向git hub上的所有人提供这些信息。如果我将以下内容放在设置文件的末尾(定义数据库后):

我得到了一个成功的查询,服务器启动,但当我尝试启动应用程序时,由于缺少设置,会出现各种错误,具体取决于我在设置文件中放置上述代码的位置


由此我推断,您无法在设置文件中查询数据库,因此我可以将此代码放在何处,以便在服务器启动时填充管理员设置和电子邮件设置变量?

我建议您不要在
settings.py
中使用django模型

通常,在加载
settings.py
之后,django知道数据库配置是什么

更惯用的做法是在设置的末尾添加一些代码。py:

from local_settings import *
或者只覆盖
ADMINS
到名称空间,硬编码
ADMINS=(('admin','admin@example.com)
在本地设置中

from local_settings import ADMINS
由于您不想将信息公开给github,请将
local\u settings.py
添加到
.gitignore


正如@DJV所说,“settings.py中的管理员和超级用户意味着不同的事情(第一个负责管理网站,而其他人负责管理内容)”,我认为管理员并不是那么重要。

我希望在服务器启动时运行此代码,而不是在每次请求时运行,而此解决方案似乎正是这样做的。我不想硬编码管理员,因为我喜欢使用django的管理员来管理用户,而且因为我从数据库中提取用户名和电子邮件,所以我不必担心在代码中暴露用户的信息

我在应用程序中创建了一个名为admins.py的文件,并在init.py中导入该文件以执行代码。现在,当用户是超级用户时,他们的信息将自动添加到管理员中

myapp.core.init.py

from myapp.core.admins import *
myapp.core.admins.py

from django.conf import settings
from django.contrib.auth.models import User
from django.core.mail import mail_admins

#admins setup: These users will get 500 error emails
admins = User.objects.filter(is_superuser__exact=True)
settings.ADMINS = []
for u in admins:
    settings.ADMINS.append((u.username, u.email))

#send test email
if settings.SEND_TEST_EMAIL:
    mail_admins('SEVER HAS BEEN STARTED', 'The server has been started @ '+settings.SITE_IP, fail_silently=False)

更新:上述解决方案存在问题。我必须重建我的数据库,当我运行syncdb时,由于缺少用户模型,它失败了。我尝试将导入移动到models.py init,但仍然没有成功。第一个安全入口在哪里??我是否必须创建管理员模型或创建用户配置文件以扩展身份验证/用户并添加is_admin字段

我建议使用原始SQL查询。您可以从应用程序和模型中提取表的名称。settings.py中的管理员和超级用户的意思不同(第一个用户负责管理网站,而其他用户负责管理内容),因此期望这种行为很容易实现是不自然的。原始SQL也不起作用。我猜用户公开的设置是在dome其他django设置发生之前加载的,设置中的任何查询都会阻止这些事情发生……我使用ADMINS主要是因为它在500错误时自动发送电子邮件,所以我想用一种简单的方法为ADMINS查询用户模型,而不是硬编码。我已经想出了一个似乎效果不错的解决方案,我将把它作为一个答案发布。您认为呢?虽然这个答案提供了有用的信息,但它并没有提供一个问题的解决方案:您可以在哪里查询管理员设置的auth用户模型?关键是我需要查询用户模型来填充ADMINS设置。
from django.conf import settings
from django.contrib.auth.models import User
from django.core.mail import mail_admins

#admins setup: These users will get 500 error emails
admins = User.objects.filter(is_superuser__exact=True)
settings.ADMINS = []
for u in admins:
    settings.ADMINS.append((u.username, u.email))

#send test email
if settings.SEND_TEST_EMAIL:
    mail_admins('SEVER HAS BEEN STARTED', 'The server has been started @ '+settings.SITE_IP, fail_silently=False)