Для себя я делал такое:
class Meta(models.Model):
name = models.CharField('Имя', max_length=32, unique=True, )
value = models.TextField('Значение', blank=True, )
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Meta:
ordering = ('-id',)
verbose_name = 'Опции'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
def set_option(option, value):
return Meta.objects.update_or_create(name=option, defaults={'value': value}, ) # obj, created
def get_option(option, default=None):
try:
row = Meta.objects.get(name=option)
return row.value
except Meta.DoesNotExist:
return default
Но вариант выше мне нравится тем, что есть кеширование, надо бы и мне как-то добавить его)