Автоматическая дата создания для объектов формы модели Django?

Каков наилучший способ автоматически установить дату создания объекта, а также поле, которое будет записывать время последнего обновления объекта?

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__ метод?

Ответ 1

Вы можете использовать auto_now и auto_now_add для updated_at и created_at соответственно.

class MyModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)