我有一個相當簡單的Django應用程序(紅帽v1.3),我使用管理應用程序創建和修改數據庫記錄。我的基礎模型中的一個字段是日期字段。每次在管理員的新建或編輯表單中顯示相應的字段時,我都希望該字段的初始值爲今天的日期(和時間)。如果她願意,用戶可以選擇修改它。在綁定的Django管理員表單中分配初始字段值
我知道我可以在我的模型定義(即在models.py中)內設置默認字段值。當數據庫記錄首次創建時,它可以正常工作。但是對於後續的更改形式的調用,我分配給默認參數(datetime.datetime.now)的可調用顯然不會被調用。
我已經看過 - 並嘗試過 - 非常好的所有提議的解決方案,其他地方在stackoverflow中描述,沒有成功。它們中的大多數似乎圍繞將初始化代碼插入到ModelForm子類中,例如無論是像這樣...
class ConstantDefAdminForm(ModelForm) :
a_date_field = DateField(initial="datetime.datetime.now") # or now()
class Meta :
model = ConstantDef
widgets = {
...
}
或類似這樣的東西...
class ConstantDefAdminForm(ModelForm) :
class Meta :
model = ConstantDef
widgets = {
...
}
def __init__(self, ...) :
# some initialisation of a_date_field
super(ConstantDefAdminForm, self).__init__(...)
但這些都不能工作。初始字段值始終設置爲存儲在數據庫中的值。我對Django文檔的閱讀是,在表單中施加初始字段值的各種方式僅適用於未綁定的表單,而不是綁定的表單。對?
但是,這種能力(有選擇地覆蓋當前存儲的值)似乎是如此受歡迎的要求,我相信必須有一種方法來做到這一點。
有沒有人有成功做到這一點?
由於提前,
菲爾
酷!這似乎是訣竅。不知道可能有什麼副作用。但我想我會在適當的時候發現:-)非常感謝。 – Phil