28

私は、ほとんど常に午後 10 時に開始するイベントのモデルを持っていますが、場合によってはそれより早く/遅く開始することもあります。管理者の作業を簡単にするために、時間はデフォルトで午後 10 時に設定したいと思いますが、必要に応じて変更できるようにします。日付は関係なく設定する必要があるため、デフォルトは必要ありませんが、理想的には現在の日付にデフォルト設定されます。

datetime.now を使用して後者を達成できることはわかっていますが、時間を特定のデフォルト値に設定することは可能ですか (また、どのように) 可能ですか?

更新: 私が達成しようとしていることをどのアプリが実行しているかを理解するよりも早く回答が得られています...おそらく、質問する前にアプリについてもっと詳しく調べておくべきでした. その間、助けてくれてありがとう!

4

5 に答える 5

19

のDjangoドキュメントからField.default

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

だからこれをしてください:

from datetime import datetime, timedelta

def default_start_time():
    now = datetime.now()
    start = now.replace(hour=22, minute=0, second=0, microsecond=0)
    return start if start > now else start + timedelta(days=1)  

class Something(models.Model):
    timestamp = models.DateTimeField(default=default_start_time)
于 2013-04-16T23:49:23.557 に答える
15

デフォルト値をTimeFieldに設定することに興味がある場合: https://code.djangoproject.com/ticket/6754

しないでください:

start = models.TimeField(default='20:00')

代わりに:

import datetime
start = models.TimeField(default=datetime.time(16, 00))
于 2015-08-04T10:02:20.683 に答える