第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將Django模型字段的默認(rèn)值設(shè)置為函數(shù)調(diào)用/可調(diào)用(例如,相對于模型對象創(chuàng)建時間的日期)

如何將Django模型字段的默認(rèn)值設(shè)置為函數(shù)調(diào)用/可調(diào)用(例如,相對于模型對象創(chuàng)建時間的日期)

撒科打諢 2019-12-25 10:22:44
編輯:如何將Django字段的默認(rèn)值設(shè)置為每次創(chuàng)建新模型對象時都會求值的函數(shù)?我想執(zhí)行以下操作,除了在此代碼中,該代碼被評估一次,并為每個創(chuàng)建的模型對象將默認(rèn)值設(shè)置為相同的日期,而不是在每次創(chuàng)建模型對象時都對代碼進(jìn)行評估:from datetime import datetime, timedeltaclass MyModel(models.Model):  # default to 1 day from now  my_date = models.DateTimeField(default=datetime.now() + timedelta(days=1))原版的:我想為函數(shù)參數(shù)創(chuàng)建一個默認(rèn)值,使它是動態(tài)的,并在每次調(diào)用函數(shù)時被調(diào)用和設(shè)置。我怎樣才能做到這一點(diǎn)?例如,from datetime import datetimedef mydate(date=datetime.now()):  print datemydate() mydate() # prints the same thing as the previous call; but I want it to be a newer value具體來說,我想在Django中進(jìn)行操作,例如,from datetime import datetime, timedeltaclass MyModel(models.Model):  # default to 1 day from now  my_date = models.DateTimeField(default=datetime.now() + timedelta(days=1))
查看完整描述

3 回答

?
達(dá)令說

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)


查看完整回答
反對 回復(fù) 2019-12-25
  • 3 回答
  • 0 關(guān)注
  • 1572 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號