נפתרה: 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 יבדוק אוטומטית אם יש עדכונים לקבצי ההגדרות של הפרויקט, ואם נמצאו הגדרות חדשות כלשהן, יעדכן את קבצי ההגדרות של הפרויקט.

הודעות קשורות:

השאירו תגובה