2011-07-10 6 views
1

モデルを定義するときにDjangoでモデルのフィールド値を自動的に設定する方法はありますか?これはタイムスタンプ(例えば)のようなものを格納するために使うことができますが、他の関数として構築されたフィールドを作成するためにも使用できます。言い換えればDjangoでモデルフィールド値を自動的に割り当てる

、私はこのような何かを探しています:

Fooクラス(models.Model):

spam = models.CharField(max_length=2000) 
my_other_field = ###? 

def generate_my_other_field(): 
    #Some algorithm to determine the value of my_other_field 
+1

これらの生成された値をデータベースに保存しますか?モデルインスタンスを見ているときにそれらを使用できるようにしますか? – Gareth

+0

他のフィールドも定義されていれば生成したいと思います - 基本的には、初期化子がPythonで動作する方法です。これを行うためのよりクリーンな方法があるかもしれませんが、それは私が考えることができる最も簡単です。 – chimeracoder

答えて

2

はい、方法があります。 Django docsから:

Field.default

フィールドのデフォルト値。これは、値または 呼び出し可能オブジェクトです。呼び出し可能な場合は、新しいオブジェクトが作成されるたびに が呼び出されます が作成されます。

+0

ありがとう!私は、デフォルト値が呼び出し可能な関数であることを認識していませんでした。 – chimeracoder

+0

このトリックは、関数をデフォルトではなく、結果(デフォルト)= datetime.datetime.now()ではなく 'default = datetime.datetime.now'のように割り当てることです。 –

関連する問題