Vyriešené: django admin pole dátumu automatickej aktualizácie

Hlavným problémom je, že pole dátumu automatickej aktualizácie nie je správne spracované Django. Ak sa pokúsite aktualizovať pole dátumu pomocou rozhrania správcu, Django automaticky aktualizuje všetky polia v tabuľke s rovnakým názvom, vrátane poľa dátumu automatickej aktualizácie. To môže viesť k neočakávaným a potenciálne nesprávnym zmenám vo vašich údajoch.

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>

Čo je pole Automatická aktualizácia

Pole „Automatická aktualizácia“ je boolovské pole v tabuľke „nastavení“ projektu Django. Keď je nastavené na True, Django automaticky skontroluje aktualizácie súborov nastavení projektu a ak sa nájdu nejaké nové nastavenia, aktualizuje súbory nastavení projektu.

Súvisiace príspevky:

Pridať komentár