Каков наилучший способ автоматически установить дату создания объекта, а также поле, которое будет записывать время последнего обновления объекта?
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()
метод.