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

med*_*iev 1 django

我有一个输入date_added字段,填写时要单击日期和时间,这很令人沮丧。我希望这种情况在幕后发生,甚至不希望它们出现。

我已经四处搜寻并尝试搜索SO,但是在保存表单时无法找到如何执行此操作的摘要。

这是来自的相关内容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
Run Code Online (Sandbox Code Playgroud)

我知道我可能必须指定exclude = ('date_added',)和定义一个def save()函数,但是我不确定为此需要的具体细节。

Man*_*dan 5

我希望这种情况在幕后发生,甚至不希望它们出现。

恕我直言,做到这一点的最佳方法是编辑模型并auto_now_add=Truedate_added现场设置。这假设您有权编辑模型。您将执行以下操作:

class Bug(models.Model):
    ...
    date_added = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

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

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

我想指出,auto_now您可以使用一个补充来跟踪更新。设置auto_now=Truedate_updated字段(如果有)很有用。