Django-constance管理员支持数据库后端吗?

3
我正在尝试设置管理员以显示应存储在数据库后端(Postgres 9.5.0)中的设置。我在shell_plus中手动创建了以下值:
In [1]: from constance.backends.database.models import Constance In [2]: first_record = Constance.objects.get(id=1)
In [3]: first_record pg-admin正确显示该条目,但django管理界面根本没有显示它。我为两个数据库运行了迁移命令(我有默认和产品数据库),但记录仍未显示出来。当然,我可以通过强制使用以下方法注册admin来使其工作: admin.site.register(Constance) 但我的问题是是否必要?
1个回答

3

是的,它们需要被管理。但你只需要使用以下命令来安装:

pip install "django-constance[database]"

您需要在settings.py中添加一些额外的设置:
CONSTANCE_BACKEND = 'constance.backends.database.DatabaseBackend'

INSTALLED_APPS = (
    # other apps
    'constance.backends.database',
)

#optional - in case you want specify table prefix

CONSTANCE_DATABASE_PREFIX = 'constance:myproject:'

接下来需要通过运行python manage.py migrate database命令来应用迁移。

要在管理界面中显示设置输入框,您需要在settings.py文件中指定它们。有各种类型的字段,您甚至可以使用CONSTANCE_ADDITIONAL_FIELDS参数添加自己的字段类型。

CONSTANCE_CONFIG = {
    'THE_ANSWER': (42, 'Answer to the Ultimate Question of Life, '
                       'The Universe, and Everything'),
}

您可以在文档页面阅读更多相关信息。

@ReginaSas 更新了答案,并附加了额外的信息。要在管理区域中显示它们,您应该在 setting.py 中定义输入项。 - undefined
这正是我试图将一些设置从settings.py文件中移动并存储在数据库中的原因,除非我错误地解释了这个库的目的。 - undefined
根据我的观察,https://github.com/jazzband/django-constance/blob/master/constance/admin.py 的代码中使用了settings.CONFIG.items()来获取输入字段,实际上它是等同于CONFIG = getattr(settings, 'CONSTANCE_CONFIG', {})。因此,无法以其他方式添加输入。从您的理解,您不想将某些设置存储在setting.py文件中?django-constance仅允许您为用户提供在管理区域更改某些设置的可能性,而不是创建新的名称-值对。 - undefined
是的,我确实更喜欢不将某些设置存储在settings.py中。而且你说的CONFIG = getattr(settings, 'CONSTANCE_CONFIG', {})似乎也是正确的。不过,我仍然不确定开发人员在说它支持数据库后端时具体指的是什么意思。 - undefined
@ReginaSas 我认为他们的主要目标是允许管理员通过网络界面编辑一些设置参数,而不必实际更改源文件。在 settings.py 中,你只需设置默认值,但它可以被管理员覆盖。 - undefined
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接