使用Django创建的网站的常规设置

时间:2018-03-18 05:59:46

标签: django django-models

认为您要为您的网站定义一些设置,如“Twitter用户名”,“元描述”等,这些设置是使用Django创建的。 Django有没有以真正美观或合乎逻辑的方式做到这一点?

我知道有一些重复的问题但是没有它们对这个问题有合理的答案。 Django是我见过的最强大的框架。但这个真正基本的问题仍未解决。

我做了类似这样的事情:创建了GeneralSetting模型。我在管理面板中为此模型添加了一个实例(条目)以及此处的所有设置。但“添加新”按钮仍然在这里。另外,我正在使用硬编码的常规设置ID。也许我可以隐藏'添加新'按钮,是的,但所有这些对我来说都很奇怪。我在想:有一些未被发现的方法来完成这项工作,这对许多Django开发人员来说是未知的。

或者,真的,Django没有技巧轻易做到这一点吗?

1 个答案:

答案 0 :(得分:0)

您可以在Django中创建singleton models

from django.db import models

class SingletonModel(models.Model):
    class Meta:
        abstract = True

    def save(self, *args, **kwargs):
        self.pk = 1
        super(SingletonModel, self).save(*args, **kwargs)

    def delete(self, *args, **kwargs):
        pass

    @classmethod
    def load(cls):
        obj, created = cls.objects.get_or_create(pk=1)
        return obj

class SiteSettings(SingletonModel):
    meta_title = models.CharField(max_length=255, default='meta')
    twitter_username = models.CharField(max_length=255, default='')

此处的网站设置将是一个只能有一个条目的模型,任何创建尝试都会更新现有条目(如果存在)。您仍然需要处理UI组件。