1 回答

TA貢獻(xiàn)1825條經(jīng)驗 獲得超6個贊
這不起作用的原因是因為您調(diào)用了該函數(shù)。因此,這意味著datetime在解釋類時對 進(jìn)行求值,所以這基本上是在您啟動服務(wù)器時進(jìn)行的。在那一刻,冷凍槍還沒有激活。
因此,這也意味著如果您稍后運行服務(wù)器一段時間,并且年份增加,它仍將使用舊值。
您可以將可調(diào)用對象傳遞給默認(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,
)
請注意, 沒有使用括號default=quarter_results_date_first,因此我們將引用傳遞給函數(shù),而不是日期時間值。
添加回答
舉報