Каков наилучший способ хранения и редактирования глобальных переменных в django admin? - PullRequest
1 голос
/ 15 февраля 2012

Какой лучший способ хранить и редактировать глобальные переменные в django admin, что-то вроде того, что ниже или есть другие более быстрые или лучшие способы сделать это? 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,
    }

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

У меня есть приложение для этой задачи, проверьте его на https://github.com/barbuza/dbconfig

Единственное отличие от вашего способа состоит в том, что я предлагаю описывать разделы конфигурации как формы вместо моделей

Это такжеподдержка кэша, поэтому ваш код не будет касаться базы данных при каждой операции чтения для значений конфигурации

0 голосов
/ 15 февраля 2012

Трудно определить «лучший способ» без всех деталей, но ваше решение будет работать и может удовлетворить ваши потребности. Двумя противниками являются:

  1. Вы можете обрабатывать только percents
  2. Каждый раз, когда вы читаете настройку, она требует вызова из базы данных

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...