Bir nesne için otomatik olarak oluşturma tarihi ve ayrıca nesnenin en son ne zaman güncellendiğini kaydedecek bir alan belirlemenin en iyi yolu nedir?
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')
Şu hatayı alıyorum:
objects_object.created_at may not be NULL
Bu değeri kendim manuel olarak ayarlamam gerekir mi? Bunun aktarılan parametrelerin amacı olduğunu düşündüm DateTimeField
(veya bunlar sadece varsayılanlar mı editable=False
ve formda görüntülenmeyeceklerini belirlediğim için, talepte gönderilmiyorlar ve bu nedenle forma koymak?).
Bunu yapmanın en iyi yolu nedir? Bir __init__
yöntem mi?
auto_now
veauto_now_add
kötü olarak kabul edilirler, bu yüzden onlardan uzak durmaya çalışın. Bu cevap , nedenini açıklar vesave()
yöntemi geçersiz kılarak daha iyi bir yaklaşım sağlar .