Solucionat: camp de data d'actualització automàtica de django admin

El principal problema és que Django no gestiona correctament el camp de la data d'actualització automàtica. Si intenteu actualitzar el camp de data mitjançant la interfície d'administració, Django actualitzarà automàticament tots els camps de la taula amb el mateix nom, inclòs el camp de la data d'actualització automàtica. Això pot provocar canvis inesperats i potencialment incorrectes a les vostres dades.

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>

Què és el camp d'actualització automàtica

El camp "Actualització automàtica" és un camp booleà a la taula "Configuració" d'un projecte Django. Quan s'estableix en True, Django comprovarà automàticament si hi ha actualitzacions als fitxers de configuració del projecte i, si es troba alguna configuració nova, actualitzarà els fitxers de configuració del projecte.

Articles Relacionats:

Deixa el teu comentari