Решено: дјанго админ поље датума аутоматског ажурирања

Главни проблем је што Дјанго не обрађује правилно поље датума аутоматског ажурирања. Ако покушате да ажурирате поље датума помоћу административног интерфејса, Дјанго ће аутоматски ажурирати сва поља у табели са истим именом, укључујући и поље датума аутоматског ажурирања. Ово може довести до неочекиваних и потенцијално нетачних промена ваших података.

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>

Шта је поље за аутоматско ажурирање

Поље „Аутоматско ажурирање“ је логичко поље у табели „подешавања“ Дјанго пројекта. Када је постављен на Тачно, Дјанго ће аутоматски проверити да ли постоје ажурирања датотека поставки пројекта и, ако се пронађу нова подешавања, ажурираће датотеке поставки пројекта.

Релатед постс:

Оставите коментар