认为您要为您的网站定义一些设置,如“Twitter用户名”,“元描述”等,这些设置是使用Django创建的。 Django有没有以真正美观或合乎逻辑的方式做到这一点?
我知道有一些重复的问题但是没有它们对这个问题有合理的答案。 Django是我见过的最强大的框架。但这个真正基本的问题仍未解决。
我做了类似这样的事情:创建了GeneralSetting模型。我在管理面板中为此模型添加了一个实例(条目)以及此处的所有设置。但“添加新”按钮仍然在这里。另外,我正在使用硬编码的常规设置ID。也许我可以隐藏'添加新'按钮,是的,但所有这些对我来说都很奇怪。我在想:有一些未被发现的方法来完成这项工作,这对许多Django开发人员来说是未知的。
或者,真的,Django没有技巧轻易做到这一点吗?
答案 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组件。