在django管理中存储和编辑全局变量的最佳方式是什么,比如下面的内容,或者还有其他更快或更好的方法?models.py:
from django.db import models
class Section(models.Model):
percent = models.PositiveSmallIntegerField(u'Percent')
some_variable = models.PositiveSmallIntegerField(u'Some_variable')
admin.py:
from app.models import Settings
class Settings(admin.ModelAdmin):
fieldsets = (
(None, {
'fields': ('percent', 'some_variable')
}),
)
像这样的上下文处理器:
from app.models import Settings
def settings(request):
settings = Settings.objects.all()[0]
from django.conf import settings
return {
'PERCENT': settings.percent,
'SOME_VARIABLE': settings.some_variable,
}
我有一个用于此任务的应用程序,请访问https://github.com/barbuza/dbconfig
与您的方式唯一的区别是,我建议将配置部分描述为表单,而不是模型
它还支持缓存,因此您的代码在配置值的每次读取操作中都不会接触数据库
如果没有所有细节,很难确定"最佳方式",但您的解决方案会起作用,可能会满足您的需求。有几个缺点是:
- 您只能处理
percents
- 每次读取设置时,都需要数据库调用
我总是建议在发明之前先找到一些东西,而且有一款新的应用程序可以以更通用的方式做一些类似的事情。django-setman(不是这个名字的粉丝。还有一个更有经验的应用程序,叫做live-settings,我也玩过。