Системные настройки (SiteSetting)¶
Техническая реализация¶
Модель SiteSetting¶
Модель SiteSetting используется для хранения системных настроек в формате ключ-значение. Это позволяет изменять параметры без необходимости деплоя приложения. Настройки доступны через Django admin в разделе "Настройки системы".
class SiteSetting(models.Model):
key = models.CharField(max_length=100, unique=True, verbose_name="Ключ")
value = models.CharField(max_length=500, verbose_name="Значение")
description = models.CharField(max_length=255, blank=True, verbose_name="Описание")
Использование функции get_setting¶
Функция get_setting позволяет получить значение настройки по ключу. Аргументы функции:
key(обязательный): ключ настройки, значение которой требуется получить.default: значение по умолчанию, возвращаемое, если настройка не найдена.description: описание настройки, используется при создании новой записи.create_if_missing: еслиTrue, создаёт новую запись с указанным значением по умолчанию и описанием, если настройка отсутствует (для важных ключей, чтобы обозначить их существование и позволить администратору поменять в будущем).
Пример использования:
from planiqum.core.models import get_setting
value = get_setting('confirm_on_save_corrections', default='false', create_if_missing=True)
Примеры использования¶
Настройка ядра¶
В ядре заложены базовые настройки, которые можно изменять через административный интерфейс. Чтобы ознакомиться со списком настроек, перейдите по ссылке.
Настройка кастомных приложений¶
Разработчики могут добавлять свои собственные настройки, используя модель SiteSetting. Это удобно для управления флагами, лимитами и текстами, которые могут изменяться в процессе работы приложения. Пример:
from planiqum.core.models import get_setting
value = get_setting('custom_flag', default='enabled', create_if_missing=True)
Преимущества¶
- Управляемость: Позволяет изменять параметры без необходимости деплоя.
- Гибкость: Поддержка кастомных приложений через добавление собственных настроек.
Рекомендации¶
- Добавляйте описания к настройкам для лучшего понимания их назначения.
- Используйте для флагов, лимитов и текстов, которые могут изменяться в процессе работы приложения.