2011-08-11 50 views
0

基本上,我有這樣的代碼在我的ModelForm:Django的DateTimeField字段成爲空時不能編輯

def save(self): 
    if not self.instance.pk: 
     self.instance.author = self.author 
     self.instance.date_sorted = datetime.now() 
    return super(PostForm, self).save(commit = True) 

我的目的,它僅保存在添加一條記錄date_sorted,而忽略了它,當編輯。因爲在某些時候我想一些date_sorted的爲空(故意)

date_sorted = models.DateTimeField(blank = True, null = True) 

我定義空白= True和空=真對:我date_sorted字段定義爲。

添加時,date_sorted將存儲當前日期和時間,但在編輯(更新其他字段)時,date_sorted會更改爲NULL。試圖在網絡上找到,但沒有運氣:(感謝任何幫助類似問題

回答

3

試試這個,它會隱藏表單日期時間字段和全自動設定日期當您發佈的消息:。

date_sorted = models.DateTimeField(auto_now=True) 

而且,你可以使用save_model方法:

def save_model(self, request, obj, form, change): 
    super(MessageAdmin, self).save_model(request, obj, form, change) 

我用它進行管理面板,不知道它是如何工作的其他實現,但嘗試看看它您可以在保存對象之前和之後輸入你的代碼。 ,所以你可以修改obj.date_sorted然後保存模型。

0

models.DateTimeField有兩個屬性:auto_now_add=True|Falseauto_now=True|False。 他們都會自動將字段設置爲editable=False。 使用auto_now=True來設置每次更新字段時的當前日期時間。 使用auto_now_add=True設置當前時間只有第一次對象被保存。

相關問題