如何自动为我的管理员条目填写我的DateTimeField?

时间:2010-09-28 04:45:32

标签: django

我的参赛作品有一个date_added字段,在填写这些字段时点击日期和时间令人沮丧。我希望这在幕后发生,我不希望这些甚至出现。

我已经用Google搜索并试图搜索,但无法找到保存表单时如何完成此操作的摘要。

以下是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()函数,但我不确定这需要的细节。

1 个答案:

答案 0 :(得分:5)

  

我希望这在幕后发生,我不希望这些甚至出现。

恕我直言,最好的方法是编辑模型并为date_added字段设置auto_now_add=True。这假设您有权编辑模型。你会做类似的事情:

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

这将解决您的两个问题:它会自动填写日期时间,而将不会显示在管理员应用中。来自文档:

  

首次创建对象时自动将字段设置为现在。用于创建时间戳。请注意,始终使用当前日期;它不仅仅是您可以覆盖的默认值。

我想请注意,您可以使用补充auto_now来跟踪更新。设置auto_now=Truedate_updated字段有用(如果有的话)。