...(私が使用した)これらのようなアプリケーションの一つはdbsettingsです...があります私はdbsettings(github上のそれの新しいフォークだけでなく)を試してみました、そしてそれらは便利です - しかし、私のニーズのために少し重すぎる。代わりに、私はより簡単な方法を実装しました。 JSONField(Postgres 9.3)を使用して作成しましたが、JSONの代わりに文字列を入力する方法を説明するのが簡単なので、TextField(max_length = 1000など)を使用することをお勧めします。
1)まず、(多分コア/ models.pyで)独自の設定モデルを構築:
class Setting(models.Model):
"""
Model for site-wide settings.
"""
name = models.CharField(max_length=200, help_text="Name of site-wide variable")
value = JSONField(null=True, blank=True, help_text="Value of site-wide variable that scripts can reference - must be valid JSON")
def __unicode__(self):
return self.name
2)次に、コア/ admin.pyで管理インターフェイスを()追加:
class SettingAdmin(admin.ModelAdmin):
list_display = ['name', 'value']
admin.site.register(Setting, SettingAdmin)
3)移行を構築して実行する:
コア/ contextprocessors.pyでおそらくすべてのリクエストにコードを追加して 'インジェクタ'()
from models import Setting
import json
def app_settings(request):
"""Global values to pass to templates"""
settings_dict = dict()
settings = dict()
for obj in Setting.objects.all():
settings[obj.name] = obj.value
settings_dict['settings'] = json.dumps(settings)
return settings_dict
の構築)
<script type="text/javascript">
//Auto-exported site-wide settings
{% autoescape off %}var site_settings = {{ settings|safe|default:"{}" }};{% endautoescape %}
</script>
5:
python manage.py schemamigration core --auto
python manage.py migrate core
4)base.htmlのトップに追加
5)次に、あなたのサイトのsettings.pyにコンテキストプロセッサを追加します。
TEMPLATE_CONTEXT_PROCESSORS = (
...,
'<yourapp>.core.contextprocessors.app_settings',
)
6)ブラウザやクレアを経由して、あなたの管理ページにログインしますTEの設定:
http://yoursite/admin/core/setting/
Add a new setting, something like:
cell_status_colors
with a value of:
["green","red"] (note this has to be valid JSON, so use quotes around strings)
or:
daily_header
with a value of:
{"text":"Tomorrow only, free shipping!"}
7)そして最後に、あなたのJavaScriptファイルのそれぞれは、標準JSを経由してこれらを呼び出すことができる必要があります:
var colors = site_settings.cell_status_colors || ["green","red"];
var msg_text = site_settings.daily_header || {"text":""};
ありがとうございました。どのようにしてDjango管理者の「新規追加」ボタンを無効にすることができるのか、つまりこれを1つのエントリだけを含むモデルフィールドにするにはどうすればよいでしょうか? – AP257
パーティーに遅れて、私はあなたが今までこれを解決したことを本当に願っています。後継者のために、あなたは " | | |関連するグループまたはユーザーに「」を追加することができます。 –
melwil