1 回答
TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
這不起作用的原因是因?yàn)槟{(diào)用了該函數(shù)。因此,這意味著datetime在解釋類時(shí)對(duì) 進(jìn)行求值,所以這基本上是在您啟動(dòng)服務(wù)器時(shí)進(jìn)行的。在那一刻,冷凍槍還沒有激活。
因此,這也意味著如果您稍后運(yùn)行服務(wù)器一段時(shí)間,并且年份增加,它仍將使用舊值。
您可以將可調(diào)用對(duì)象傳遞給默認(rèn)值,從而使用輔助函數(shù),例如:
def quarter_results_date(month):
yr = datetime.datetime.now().year
__, dy = calendar.monthrange(yr, month)
return datetime.datetime(
yr,
month,
dy
)
def quarter_results_date_first():
return quarter_results_date(1)
class Company(models.Model):
q1_results_date = models.DateField(
verbose_name='Q1 financial results',
default=quarter_results_date_first,
blank=False,
null=False,
)
請(qǐng)注意, 沒有使用括號(hào)default=quarter_results_date_first,因此我們將引用傳遞給函數(shù),而不是日期時(shí)間值。
添加回答
舉報(bào)
