วิธีที่ดีที่สุดในการตั้งวันที่สร้างสำหรับวัตถุโดยอัตโนมัติคืออะไรและเขตข้อมูลที่จะบันทึกเมื่อวัตถุได้รับการปรับปรุงล่าสุด
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()
วิธีการนั้น