自动设置对象创建日期以及记录该对象上次更新时间的字段的最佳方法是什么?
models.py:
created_at = models.DateTimeField(False, True, editable=False)
updated_at = models.DateTimeField(True, True, editable=False)
views.py:
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
obj = form.save(commit=False)
obj.user = request.user
obj.save()
return HttpResponseRedirect('obj_list')
我得到错误:
objects_object.created_at may not be NULL
我是否必须自己手动设置此值?我以为那是传递给参数的重点DateTimeField
(或者它们只是默认值,由于我已经设置了editable=False
它们,所以它们不会在表单上显示,因此不会在请求中提交,因此也不会得到放入表格?)。
最好的方法是什么?一种__init__
方法是什么?
auto_now
并且auto_now_add
被认为是邪恶的,所以请尽量避免。该答案说明了原因,并提供了更好的方法来覆盖该save()
方法。