Django:如何实现系统标志

Posted

技术标签:

【中文标题】Django:如何实现系统标志【英文标题】:Django: How to implement system flags 【发布时间】:2011-12-01 16:48:41 【问题描述】:

我正在 Django 中开发一个应用程序,我很好奇如何添加一个模型,以便只存在 1 行(即单例)。

作为一个例子,我想维护一组我正在运行的应用程序的布尔标志:它是打开还是关闭(所以我可以手动打开或关闭它,甚至可能是每个模块)。

我看不到文档的任何部分解释了进行此设置的好方法。

有什么建议吗?

【问题讨论】:

我们不知道这是干什么用的。 重新解释以帮助澄清 我不认为这就是单例的意思。 【参考方案1】:

我对您的目标也有些困惑,但我建议您查看文档中的 Model Instance section。您可能应该考虑自定义模型的验证或清理。

如果您的目标是在您的模型的表中只标记 1 行:在验证期间,您可以运行查询以查看是否标记了任何其他行,并将它们更新为不标记。 (或删除它们)。

这个问题Unique BooleanField value in Django 可能会有所帮助。

【讨论】:

【参考方案2】:

有几个应用程序已经在处理这个问题,请查看http://djangopackages.com/grids/g/live-setting/

【讨论】:

【参考方案3】:

不确定你在什么情况下需要这个解释,但我有一个模型,它包含许多用于验证器检查和其他东西的键/值对。项目的每个实施都需要密钥,但项目之间的值会有所不同。这些值应该可由管理员用户维护。一旦设置,这些值通常不需要改变太多。鉴于此,我决定将它们放入模型中。这有点奇怪,但足够简单。

    您应该能够通过代码将模型的写入权限限制为您的应用或用户的一行。

    只引用查询集中的第一行

    row = MyVariables.objects.all()[0]
    

先测试是否有行。如果您认为可能不小心有多个记录,请确保它是有序的(但如果您正确地执行了 (1),则永远不会发生这种情况。

【讨论】:

以上是关于Django:如何实现系统标志的主要内容,如果未能解决你的问题,请参考以下文章

Django 2.0 的路由如何实现正则表达式

django-registration 与 paypal 集成

如何在 Django 2.1 中的模板内的 for 循环内设置变量?

Swift:如何使用 PREPROCESSOR 标志(如`#if DEBUG`)来实现 API 密钥?

如何在django系统外使用django的ORM

Django中如何实现静态文件缓存到云服务中