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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

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

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

撒科打諢 2019-12-25 10:22:44
編輯:如何將Django字段的默認(rèn)值設(shè)置為每次創(chuàng)建新模型對(duì)象時(shí)都會(huì)求值的函數(shù)?我想執(zhí)行以下操作,除了在此代碼中,該代碼被評(píng)估一次,并為每個(gè)創(chuàng)建的模型對(duì)象將默認(rèn)值設(shè)置為相同的日期,而不是在每次創(chuàng)建模型對(duì)象時(shí)都對(duì)代碼進(jìn)行評(píng)估: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)建一個(gè)默認(rèn)值,使它是動(dòng)態(tài)的,并在每次調(diào)用函數(shù)時(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具體來(lái)說(shuō),我想在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á)令說(shuō)

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

這個(gè)問(wèn)題被誤導(dǎo)了。在Django中創(chuàng)建模型字段時(shí),您并未定義函數(shù),因此函數(shù)默認(rèn)值無(wú)關(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))

最后一行沒(méi)有定義函數(shù);它正在調(diào)用一個(gè)函數(shù)來(lái)在類(lèi)中創(chuàng)建一個(gè)字段。


Django 1.7之前的版本


Django 允許您將callable作為默認(rèn)值傳遞,并且每次都會(huì)調(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以上


請(qǐng)注意,自Django 1.7起,不建議將lambda用作默認(rèn)值(請(qǐng)參閱@stvnw注釋?zhuān)?。正確的方法是在字段之前聲明一個(gè)函數(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)


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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