0

モデル:

class Comment(models.Model):
    date = models.DateTimeField(default = datetime.datetime.now)
    text = models.TextField()

形:

class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment

テンプレートには「テキスト」フィールドしかありません。送信ボタンをクリックすると、日付フィールドのデフォルト値にもかかわらず、form.data の QueryDict にはテキストのみが含まれます。デフォルト値を適切に設定するには?

4

2 に答える 2

1

アップデート:

テンプレートにはフィールドのみが含まれているとおっしゃっていたので、そのdefault=datetime.date.nowように動作すると思いました。auto_now_add=Truetext

date状況は同じように処理され、フォームにフィールドを表示する必要があります。

無視したい場合は、ModelForm.saveメソッドをオーバーライドして自分で日付を設定するか、モデルsave()定義に追加することができます。

最初の保存時にauto_now_add=True日付フィールドを設定するこの動作を自動的に追加するモデルフィールド定義のパラメーターを調べる必要があります。datetime.datetime.now()

date = models.DateTimeField(auto_now_add=True)
于 2012-08-20T01:44:10.467 に答える
0

あなたは書くべきです

default = datetime.datetime.now()

関数 ang get datetime を呼び出すかっこ付き。これをより良い方法で行うためのauto_nowフィールドがあります。https://docs.djangoproject.com/en/dev/ref/models/fields/#datefield

これらは、ビューから初期データを提供する別の方法です。

form = CommentForm( initial = { 'date': datetime.datetime.now(), 'text': u'', }

https://docs.djangoproject.com/en/dev/ref/forms/fields/#initialで詳細を読む

于 2012-08-20T13:43:48.760 に答える