Jaki jest najlepszy sposób na automatyczne ustawienie daty utworzenia obiektu, a także pola, które będzie rejestrować, kiedy obiekt był ostatnio aktualizowany?
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')
Wyskakuje mi błąd:
objects_object.created_at may not be NULL
Czy muszę samodzielnie ustawić tę wartość ręcznie? Myślałem, że to był punkt przekazywania parametrów do DateTimeField
(czy są to tylko wartości domyślne, a ponieważ ustawiłem, editable=False
że nie są wyświetlane w formularzu, dlatego nie są przesyłane w żądaniu i dlatego nie są umieścić w formularzu?).
Jaki jest najlepszy sposób na zrobienie tego? __init__
Metoda?
auto_now
iauto_now_add
są uważane za złe, więc staraj się ich unikać. Ta odpowiedź wyjaśnia, dlaczego i zapewnia lepsze podejście, zastępującsave()
metodę.