2017-08-22 16 views
0

Django Adminで変数/定数が必要ですが、後でコードで使用できます。Django Admin:変更可能なDjango Admin内の変数/定数

などの例のAPIキー、Googleタグマネージャの識別番号については、

私は設定や他のファイルにそれらを設定することができます知っているが、これはマーケティングチームのためのより多くのであり、変更することができます。

これはどのように行うことができますか?

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は、このモードのインスタンスを許可しているこの道 - だけで存在することができます - (モデルが最善の解決策ではありませんので、ない複数)、その後のような何かを

+0

単純にそれぞれのフィールドを追加しますか? –

+0

https://djangopackages.org/grids/g/live-setting/のいずれかのパッケージが役に立つかもしれません。 – Alasdair

+0

@Max M - あなたは詳細を教えてくれますか?複数のフィールドを持つモデルを使用している場合、必要な数だけモデルを追加できます。 – user3541631

答えて

1

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 

また、あなたは単にそれが必要な場合、これに他のモデルからのForeignKeyを提供する必要があります。

関連する問題