Çözüldü: Django admin otomatik güncelleme tarihi alanı

Ana sorun, otomatik güncelleme tarihi alanının Django tarafından düzgün bir şekilde işlenmemesidir. Tarih alanını yönetici arayüzünü kullanarak güncellemeye çalışırsanız, Django otomatik güncelleme tarih alanı da dahil olmak üzere tablodaki aynı ada sahip tüm alanları otomatik olarak güncelleyecektir. Bu, verilerinizde beklenmeyen ve potansiyel olarak yanlış değişikliklere yol açabilir.

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>

Otomatik güncelleme alanı nedir

"Otomatik güncelleme" alanı, bir Django projesinin "ayarlar" tablosundaki bir boole alanıdır. True olarak ayarlandığında Django, projenin ayar dosyalarındaki güncellemeleri otomatik olarak kontrol edecek ve herhangi bir yeni ayar bulunursa, projenin ayar dosyalarını güncelleyecektir.

İlgili Mesajlar:

Leave a Comment