Risolto: campo della data di aggiornamento automatico dell'amministratore di django

Il problema principale è che il campo della data di aggiornamento automatico non è gestito correttamente da Django. Se provi ad aggiornare il campo della data utilizzando l'interfaccia di amministrazione, Django aggiornerà automaticamente tutti i campi della tabella con lo stesso nome, incluso il campo della data di aggiornamento automatico. Ciò può portare a modifiche impreviste e potenzialmente errate ai dati.

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>

Che cos'è il campo di aggiornamento automatico

Il campo "Aggiornamento automatico" è un campo booleano nella tabella "impostazioni" di un progetto Django. Se impostato su True, Django controllerà automaticamente gli aggiornamenti ai file delle impostazioni del progetto e, se vengono trovate nuove impostazioni, aggiornerà i file delle impostazioni del progetto.

Related posts:

Lascia un tuo commento