3 回答

TA貢獻(xiàn)1821條經(jīng)驗 獲得超6個贊
這個問題被誤導(dǎo)了。在Django中創(chuàng)建模型字段時,您并未定義函數(shù),因此函數(shù)默認(rèn)值無關(guān)緊要:
from datetime import datetime, timedelta
class MyModel(models.Model):
# default to 1 day from now
my_date = models.DateTimeField(default=datetime.now() + timedelta(days=1))
最后一行沒有定義函數(shù);它正在調(diào)用一個函數(shù)來在類中創(chuàng)建一個字段。
Django 1.7之前的版本
Django 允許您將callable作為默認(rèn)值傳遞,并且每次都會調(diào)用它,如您所愿:
from datetime import datetime, timedelta
class MyModel(models.Model):
# default to 1 day from now
my_date = models.DateTimeField(default=lambda: datetime.now() + timedelta(days=1))
Django 1.7以上
請注意,自Django 1.7起,不建議將lambda用作默認(rèn)值(請參閱@stvnw注釋)。正確的方法是在字段之前聲明一個函數(shù),并將其用作可調(diào)用的default_value中的arg:
from datetime import datetime, timedelta
# default to 1 day from now
def get_default_my_date():
return datetime.now() + timedelta(days=1)
class MyModel(models.Model):
my_date = models.DateTimeField(default=get_default_my_date)
- 3 回答
- 0 關(guān)注
- 1572 瀏覽
添加回答
舉報