如何自动设置对象的创建日期和记录上次更新时间的字段,这是最佳方法?
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_add
或auto_now
完全没有问题。它会在保存模型之前设置字段(https://github.com/django/django/blob/stable/3.0.x/django/db/models/fields/__init__.py#L1343)。 - yndolok