我正在Django开发一个应用程序,我很好奇如何添加一个模型,只有1行才会出现(即Singleton)。
作为一个例子,我想维护一组我正在运行的应用程序的布尔标志:它是打开还是关闭(所以我可以手动打开或关闭它,甚至每个模块)。
我看不到文档的任何部分解释了设置它的好方法。
有什么建议吗?
答案 0 :(得分:1)
你不确定在什么情况下解释你需要这个,但我有一个模型,它包含验证器检查和其他东西中使用的许多键/值对。项目的每个实现都需要密钥,但项目之间的值会有所不同。这些值应该由管理员用户维护。设置后,这些值通常不需要更改。鉴于此,我决定将它们放入模型中。这有点奇怪但很简单。
您应该可以通过代码将模型的写入权限限制为应用程序或用户的一行。
只引用QuerySet中的第一行
row = MyVariables.objects.all()[0]
先测试是否有行。如果您认为可能会意外地存在多条记录,那么请确保它是有序的(但如果您正确地执行了(1)则不会发生这种情况。
答案 1 :(得分:1)
有几个应用已处理此问题,请查看http://djangopackages.com/grids/g/live-setting/
答案 2 :(得分:0)
我对你的目标也有点困惑,但我建议你查看文档的Model Instance section。您应该考虑自定义验证或清理模型。
如果您的目标是在模型的表中仅标记1行:在验证期间,您可以运行查询以查看是否标记了任何其他行,并将其更新为未标记。 (或删除它们)。
此问题Unique BooleanField value in Django可能会有所帮助。