Який найкращий спосіб автоматично встановити дату створення об’єкта, а також поле, яке буде записано, коли об’єкт востаннє оновлений?
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__
Метод?
auto_now
іauto_now_add
вважаються злими, тому намагайтеся уникати їх. Ця відповідь пояснює, чому і забезпечує кращий підхід, перекриваючиsave()
метод.