我的参赛作品有一个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()
函数,但我不确定这需要的细节。
答案 0 :(得分:5)
我希望这在幕后发生,我不希望这些甚至出现。
恕我直言,最好的方法是编辑模型并为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
字段有用(如果有的话)。