Решено: поле за дата на автоматично актуализиране на django admin

Основният проблем е, че полето за дата на автоматично актуализиране не се обработва правилно от Django. Ако се опитате да актуализирате полето за дата с помощта на администраторския интерфейс, Django автоматично ще актуализира всички полета в таблицата със същото име, включително полето за дата за автоматично актуализиране. Това може да доведе до неочаквани и потенциално неправилни промени в данните ви.

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>

Какво представлява полето за автоматично актуализиране

Полето „Автоматична актуализация“ е булево поле в таблицата „настройки“ на проект на Django. Когато е зададено на True, Django автоматично ще проверява за актуализации на файловете с настройки на проекта и, ако бъдат намерени нови настройки, ще актуализира файловете с настройки на проекта.

Подобни публикации:

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