Qual é a melhor maneira de definir automaticamente uma data de criação para um objeto e também um campo que registrará a última atualização do objeto?
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')
Eu recebo o erro:
objects_object.created_at may not be NULL
Preciso definir manualmente esse valor pessoalmente? Eu pensei que era o ponto dos parâmetros passados para DateTimeField
(ou eles são apenas padrões, e desde que eu definai, editable=False
eles não são exibidos no formulário, portanto, não são enviados na solicitação e, portanto, não são colocar no formulário?).
Qual é a melhor maneira de fazer isso? Um __init__
método?
auto_now
eauto_now_add
são considerados maus, então tente evitá-los. Esta resposta explica o porquê e fornece uma abordagem melhor, substituindo osave()
método.