2010-09-28 29 views
0

我對我的參賽作品有date_added字段,填寫這些參賽作品時點擊日期和時間令人沮喪。我希望在幕後發生這種情況,我不希望這些作品出現。如何爲我的管理條目自動填寫我的DateTimeField?

我已經搜索了一遍,並嘗試搜索,但無法找到一個片段,當我保存我的表單時可以這樣做。

下面是admin.py的相關位:

class BugForm(forms.ModelForm): 
    class Media: 
    #js = ('http://static.arounds.org/wmd/wmd.js',) 
    js = ('http://ajax.googleapis.com/ajax/libs/mootools/1.2.3/mootools-yui-compressed.js', 'http://static.arounds.org/js/moowmd.js', 'http://static.arounds.org/js/wmd-config.js') 
    css = { 
     'all': ('http://static.arounds.org/css/wmd.css',) 
    } 

    class Meta: 
    model = Bug 

class BugAdmin(admin.ModelAdmin): 
    fields = ['name', 'slug', 'excerpt', 'summary', 'date_added', 'poster', 'categories', 'status'] 
    prepopulated_fields = { 'slug' : ['name'] } 
    form = BugForm 

我知道,我必須很可能指定exclude = ('date_added',)並定義def save()功能,但我不知道需要這個細節的。

回答

4

我希望在幕後發生這種情況,我不希望這些事情出現。

恕我直言,最好的辦法是編輯模型,併爲date_added字段設置auto_now_add=True。這假定您有權編輯模型。你會做這樣的事情:

class Bug(models.Model): 
    ... 
    date_added = models.DateTimeField(auto_now_add=True) 

這將解決這兩個問題的:它會在約會時自動填寫不會在管理應用程序顯示出來。從文檔:

當首次創建對象時自動將字段設置爲現在。用於創建時間戳。請注意,始終使用當前日期;這不僅是您可以覆蓋的默認值。

我想說明的是,您可以使用補充auto_now來跟蹤更新。如果有的話,設置auto_now=True將對date_updated字段有用。

+0

通常我會推薦'default = datetime.datetime.now' over'auto_now_add',但由於OP不希望該字段根本顯示,所以後者是這次的正確解決方案。 – 2010-09-28 06:22:32

+0

@Daniel:「默認」情況下是否從Python獲得時間,「auto_now_add」情況是否告訴數據庫使用SQL NOW()函數獲取時間? – 2010-09-28 07:20:12

相關問題