ปัญหาหลักคือฟิลด์วันที่อัปเดตอัตโนมัติไม่ได้รับการจัดการอย่างถูกต้องโดย Django หากคุณพยายามอัปเดตช่องวันที่โดยใช้อินเทอร์เฟซผู้ดูแลระบบ Django จะอัปเดตช่องทั้งหมดในตารางโดยอัตโนมัติด้วยชื่อเดียวกัน รวมถึงช่องวันที่อัปเดตอัตโนมัติด้วย สิ่งนี้สามารถนำไปสู่การเปลี่ยนแปลงข้อมูลของคุณโดยไม่คาดคิดและอาจไม่ถูกต้อง
I have a model with a date field. I want to automatically update the date field when an object is created or edited in the admin panel. How can I do this? A: You can override <code>save_model</code> method of your admin class and set the value of <code>date</code> field to <code>datetime.now()</code>. <blockquote> <p><strong><a href="https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin" rel="nofollow noreferrer">ModelAdmin</a></strong></p> <p><strong><a href="https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#django-contrib-admin-options-modeladmin-save_model" rel="nofollow noreferrer">save_model()</a></strong></p> <p>[...] This method should save the object and return the new instance.</p> </blockquote> Example: <code>class MyModelAdmin(admin, ModelAdmin): def save_model(self, request, obj, form, change): if not change: # obj is being created for first time (i e., it's new) obj = super().save_model(request, obj, form, change) # create object first # now set your custom values here... obj = super().save_model(request, obj, form=form._meta['fields'], change=change) # update object with custom values else: # existing object is being edited (i e., it's not new) # now set your custom values here... obj = super().save_model(request, obj=obj._meta['fields'], form=form._meta['fields'], change=change) # update object with custom values return obj </code>
ช่องอัปเดตอัตโนมัติคืออะไร
ช่อง "อัปเดตอัตโนมัติ" เป็นช่องบูลีนในตาราง "การตั้งค่า" ของโปรเจ็กต์ Django เมื่อตั้งค่าเป็น True Django จะตรวจสอบการอัปเดตไฟล์การตั้งค่าของโปรเจ็กต์โดยอัตโนมัติ และหากพบการตั้งค่าใหม่ จะอัปเดตไฟล์การตั้งค่าของโปรเจ็กต์