1 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
正如你可能在Django文檔中看到的,你可以使用一個(gè)值或一個(gè)可調(diào)用作為默認(rèn)值。如果您使用可調(diào)用的(例如函數(shù)),則每次需要默認(rèn)值時(shí)都會(huì)調(diào)用它。
問(wèn)題:您正在傳遞值,因?yàn)槟谡{(diào)用函數(shù) 。該函數(shù)被調(diào)用一次,當(dāng)您的模塊(models.py)導(dǎo)入到應(yīng)用程序中時(shí)。default=return_timestamped_id()
解決方案:傳遞函數(shù)本身default=return_timestamped_id
你可以在django.models.Fields類中看到相關(guān)的代碼(注釋我的):
class Field():
def __init__(self, ..., default=NOT_PROVIDED,...):
...
self.default = default # save the default as a member variable
...
def get_default(self):
"""Return the default value for this field."""
return self._get_default()
@cached_property
def _get_default(self):
if self.has_default():
if callable(self.default): # if it is callable, return it
return self.default
return lambda: self.default # else wrap in a callable
添加回答
舉報(bào)