Rešeno: django admin polje datuma automatskog ažuriranja

Glavni problem je što Django ne rukuje ispravno poljem datuma automatskog ažuriranja. Ako pokušate da ažurirate polje datuma pomoću administrativnog interfejsa, Django će automatski ažurirati sva polja u tabeli sa istim imenom, uključujući i polje datuma automatskog ažuriranja. To može dovesti do neočekivanih i potencijalno pogrešnih promjena u vašim podacima.

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>

Šta je polje za automatsko ažuriranje

Polje „Automatsko ažuriranje“ je logičko polje u tabeli „settings“ Django projekta. Kada se postavi na True, Django će automatski provjeriti da li postoje ažuriranja datoteka postavki projekta i, ako se pronađu nove postavke, ažurirat će datoteke postavki projekta.

Slični postovi:

Ostavite komentar