Solved: django admin auto update date field

Ang pangunahing problema ay ang patlang ng petsa ng pag-update ng auto ay hindi maayos na pinangangasiwaan ng Django. Kung susubukan mong i-update ang field ng petsa gamit ang admin interface, awtomatikong ia-update ng Django ang lahat ng field sa talahanayan na may parehong pangalan, kasama ang field ng petsa ng awtomatikong pag-update. Maaari itong humantong sa mga hindi inaasahang at posibleng maling pagbabago sa iyong data.

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>

Ano ang Auto update field

Ang field na "Auto update" ay isang boolean na field sa talahanayan ng "mga setting" ng isang proyekto ng Django. Kapag nakatakda sa True, awtomatikong susuriin ni Django ang mga update sa mga file ng mga setting ng proyekto at, kung may makitang mga bagong setting, ia-update ang mga file ng mga setting ng proyekto.

Kaugnay na mga post:

Mag-iwan ng komento