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=Falseeles 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_noweauto_now_addsão considerados maus, então tente evitá-los. Esta resposta explica o porquê e fornece uma abordagem melhor, substituindo osave()método.