2017-08-22 79 views
0

我想在Django Admin中使用变量/常量,以后可以在代码中使用。Django管理:Django Admin中的变量/常量可以更改

例如API密钥,谷歌标签管理器识别号等

我知道我可以将它们在设置或其他文件,但这是更多的营销队伍,并可以改变的。

这是怎么做到的?只是单一的记录可变(非多 - 所以模型是不是最好的解决方案)

+0

只需为每个字段添加一个单独的字段? –

+0

您可能会在https://djangopackages.org/grids/g/live-setting/上找到其中一个包。 – Alasdair

+0

@Max M - 你能否详细说说,给我一个链接?如果我使用多个字段的模型,我可以添加尽可能多的模型,因为我希望这不可能 – user3541631

回答

1

然后像做:

class myConstant(models.Model) 
    # ... 

    def clean(self): 
     if self.id: # instance already exists 
      # do some clean 
     elif myConstant.objects.count() > 0: 
      raise ValidationError("Only one instance allowed") 
     else: 
      # do some clean 

    def save(self): 
     # check if this instance already exists 
     if self.id: 
      super().save() 
     # else: count numbers of all instances of this model 
     elif myConstant.objects.all().count() > 0: 
      return # no save will be processed 
     else: 
      super().save() 

这样,你只1允许的实例,这种模式 - 它能够存在的只有1字段是你的常数值。

您可以进行更多保存,不仅检查您的当前实例是否已经存在,而且检查您的当前实例是否可能已有一个实例。

if myConstant.objects.count() > 0 and myConstant.objects.all[0] == self: 
    # do some clean in case of clean() method 
    super().save() # in case of save method 

此外,如果你想用一个模型来表示这种不断在你的应用程序/项目的任何地方,你就必须要为此提供ForeignKeys其他车型,它是必要的。