models.py次の3日間、デフォルトを取得する方法ジャンゴモデルDateTimeField型(デフォルト=次の3日間)
class TestModel(models.Model):
event = models.DateTimeField(default=next 3-days)
? 可能ですか?
models.py次の3日間、デフォルトを取得する方法ジャンゴモデルDateTimeField型(デフォルト=次の3日間)
class TestModel(models.Model):
event = models.DateTimeField(default=next 3-days)
? 可能ですか?
新しい各TestModel
インスタンスが作成されるときではありません。
ちょっと説明してください。 "in_three_days"関数で、タイムゾーンを認識できず、問題を引き起こす可能性があるdatetime.now()を使用してください。 –
@GiorgiJambazishvili良い点、使用するコードを更新しました。 'timezone.now()'。 – Alasdair
これを行う方法があります。
from datetime import timedelta
from django.utils import timezone
def in_three_days():
return timezone.now() + timedelta(days=3)
class TestModel(models.Model):
event = models.DateTimeField(default=in_three_days)
あなたはバイバブの答えのようにx = datetime.datetime.now() + datetime.timedelta(days = 3)
を使用している場合は、モジュールがロードされると、その後x
は、計算されます:あなたはたとえば、あなたがしたい日時を返す呼び出し可能を使用する必要があります
import datetime
class TestModel(models.Model):
x = datetime.datetime.now() + datetime.timedelta(days = 3)
event = models.DateTimeField(default = x)
これはサーバがロードされると 'x'を一度計算します。 datetimeを返す呼び出し可能関数を使用する必要があります。 – Alasdair
私はそれを得ていませんでした。あなたは 'x'を返す短い関数を定義する方が良いと言いますか?どうやって?? –
いくつかの回答では、callableを使用する必要があるだけでなく、次の3日間を正しく設定するためのタイムゾーン対応のdatetimeオブジェクトも含める必要があります。これは、サーバーに依存するタイムゾーンを認識できないdatetimeオブジェクト時間
from django.utils import timezone as tz
def next_day_dt(n=3):
return tz.localtime(tz.now()) + tz.timedelta(days=n)
class TestModel(models.Model):
event = models.DateTimeField(default=next_day_dt)
...
は、それが
あなたが "次の3日間" とは何を意味するかを役に立てば幸い?これは* datetime *ではなく* period *です。 –
はい期間、次の3期間 – Sam
今日から3日後を意味しますか? – Dalvtor