Selesai: medan tarikh kemas kini automatik admin django

Masalah utama ialah medan tarikh kemas kini automatik tidak dikendalikan dengan betul oleh Django. Jika anda cuba mengemas kini medan tarikh menggunakan antara muka pentadbir, Django akan mengemas kini secara automatik semua medan dalam jadual dengan nama yang sama, termasuk medan tarikh kemas kini automatik. Ini boleh membawa kepada perubahan yang tidak dijangka dan berkemungkinan tidak betul pada data anda.

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>

Apakah medan Kemas kini automatik

Medan "Kemas kini automatik" ialah medan boolean dalam jadual "tetapan" projek Django. Apabila ditetapkan kepada Benar, Django akan menyemak kemas kini secara automatik pada fail tetapan projek dan, jika sebarang tetapan baharu ditemui, akan mengemas kini fail tetapan projek.

Related posts:

Tinggalkan komen