管理者で行うことは可能ですが、非常に簡単な方法はありません。また、私はあなたのモデルにほとんどのビジネスロジックを保持するためのアドバイスをしたいので、Django Adminに依存することはありません。
モデルに2つの別個のフィールドがあると、もっと簡単になり(おそらくさらに良いかもしれません)。次に、それらを組み合わせたモデルにメソッドを追加します。例えば
:
class MyModel(models.model):
field1 = models.CharField(max_length=10)
field2 = models.CharField(max_length=10)
def combined_fields(self):
return '{} {}'.format(self.field1, self.field2)
が次にadminにあなたが読み取り専用フィールドとしてcombined_fields()
を追加することができます。
class MyModelAdmin(models.ModelAdmin):
list_display = ('field1', 'field2', 'combined_fields')
readonly_fields = ('combined_fields',)
def combined_fields(self, obj):
return obj.combined_fields()
データベースにcombined_fields
を保存したい場合にも、それを救うことができますモデルを保存するとき:
def save(self, *args, **kwargs):
self.field3 = self.combined_fields()
super(MyModel, self).save(*args, **kwargs)
おかげで、これは私は何ではありません探している。カスタムフィールドをDBに保存する必要はなく、計算された文字列だけを保存します。基本的に私がやっているのは、記号から数学的または文字列式を構築することです。ユーザーはシンボルを選択します(これらはモデルの一部ではないカスタムフィールドです)。そして、彼がsaveをクリックすると、シンボルに変換してDBに格納します。 – michalv82
@ michalv82モデルの 'save()'メソッドでデータベースに保存して、私の答えの更新をチェックすることもできます。 – rednaw
もう一度お返事ありがとうございますが、最後のフィールド(記号)を組み合わせたフィールドを保存したくないという問題があります。最後の文字列を保存したいだけです。 – michalv82