Как сохранить настройки приложения Django в базе данных или изменить их на лету? - PullRequest
5 голосов
/ 25 апреля 2011

У кого-нибудь есть предложения по созданию системы, позволяющей мне менять настройки на лету? Например, у меня есть текстовая область, которую пользователи могут заполнять, и сейчас она имеет максимальный предел символов 1000. Когда-нибудь я захочу изменить его на 500, или 2000, или что-то еще. Поэтому я не хочу ограничивать саму модель, чтобы не пережить кошмар резервного копирования БД, запустить syncdb, повторно импортировать БД, такой кошмар, просто чтобы изменить простое значение. Я бы лучше проверил Javascript или код views.py на длину символа.

if (length > value_stored_somewhere)
 throw error message

Я подумал, что могу просто поместить эти значения в settings.py или, возможно, в отдельный local-settings.py, но это значит, что если я захочу изменить значение, мне придется перезапустить приложение, верно? Или я могу ошибаться, поэтому, пожалуйста, скажите мне, если я ошибаюсь.

Я подумал, что идеальный способ сделать это - поместить настройки в базу данных, чтобы администраторы могли изменять значения на лету, не касаясь каких-либо файлов .py. Я посмотрел на django-dbsettings, но там, похоже, вообще ничего не происходит.

Пожалуйста, дайте мне предложения и решения. Большое спасибо!

1 Ответ

6 голосов
/ 25 апреля 2011

Вы правы со всеми своими предположениями. Вам нужно перезапустить приложение, если вы хотите изменить настройки (в любом файле настроек). Прямо сейчас нет возможности «изменить настройки на лету». Существует множество приложений многократного использования, которые не обрабатываются так называемыми Live Settings . Может быть, вы попробуете один из них. Имейте в виду, что даже изменяя настройки на лету, вы не будете изменять поведение в Django (поскольку Django или другие приложения напрямую используют внутренние настройки). Однако для пользовательского приложения или проекта это хороший подход.

...