Cambiar la configuración de Django en tiempo de ejecución

Me gustaría exponer algunas configuraciones (específicas de la aplicación) a la interfaz de administración, para que los usuarios puedan cambiarlas cómodamente y no tener que reiniciar Django.

¿Cómo debo hacer esto?

Revisé las aplicaciones enhttp: //djangopackages.com/grids/g/live-setting (por cierto, django-constance fue el más atractivo), pero realmente lo que están haciendo todas estas aplicaciones es almacenar valores en una base de datos, proporcionar una interfaz web para cambiarlos y almacenar en caché. ¿No son las dos primeras características ya integradas en Django?

Los mayores inconvenientes que veo son que ninguna de las aplicaciones reemplaza a la ubicación anterior de esta configuración (settings.py), y requiere que migre a su notación y, a menudo, agregue otro procesador de contexto para acceder a ellas en las plantillas .

¿No podría simplemente hacer esto?

Crear un modelo para mi configuración (esto me da varios tipos y validación) Instante uno de esos objetos para mantener mi configuración (esto permite a los usuarios editarlos en la interfaz de administración). Podría volcar los valores predeterminados como elementos fijos como para otros modelosWrap settings.py para que realice una consulta de base de datos para mi configuración -http: //www.loose-bits.com/2011/04/extending-django-settings-with-derived.htm

Desde mi punto de vista actual e ingenuo, los únicos inconvenientes que veo serían:

Agregar o cambiar la configuración disponible requiere una migración de esquema (sur). - Puedo vivir con ello Tengo un modelo con posiblemente varias instancias pero realmente solo necesito un singleton. - Eso podría ser una característica útil en algún momento. Rendimiento / almacenamiento en caché: mirando ahttp: //code.djangoproject.com/svn/django/trunk/django/conf Tendría que poner un poco de inteligencia en el contenedor y / o modelo de configuración, para que el modelo cambie los valores claros o actualizados en caché. - no parece ser ciencia espacial. Hacer lo mismo en otro proyecto requeriría un esfuerzo similar nuevamente. - Creo que un único diccionario constante en settings.py, que contiene los nombres de los modelos y los nombres de los campos para las búsquedas es todo lo que sería diferente.

¿No sería este el mejor de ambos mundos? El administrador de tiempo de ejecución (con todas sus ventajas), el back-end de la base de datos, el almacenamiento en caché y ninguno de mis ajustes. USED_TO_BE_IN_SETTINGS_DOT_PY necesitaría algún cambio. ¿Me estoy perdiendo de algo

Respuestas a la pregunta(6)

Su respuesta a la pregunta