Автоматическая дата создания для объектов формы модели Django? - PullRequest
118 голосов
/ 07 августа 2010

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

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 Ответ

251 голосов
/ 07 августа 2010

Вы можете использовать опции 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)
...