Επιλύθηκε: πεδίο ημερομηνίας αυτόματης ενημέρωσης διαχειριστή django

Το κύριο πρόβλημα είναι ότι το πεδίο ημερομηνίας αυτόματης ενημέρωσης δεν αντιμετωπίζεται σωστά από το 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>

Τι είναι το πεδίο Αυτόματη ενημέρωση

Το πεδίο "Αυτόματη ενημέρωση" είναι ένα πεδίο boolean στον πίνακα "ρυθμίσεις" ενός έργου Django. Όταν οριστεί σε True, το Django θα ελέγξει αυτόματα για ενημερώσεις στα αρχεία ρυθμίσεων του έργου και, εάν βρεθούν νέες ρυθμίσεις, θα ενημερώσει τα αρχεία ρυθμίσεων του έργου.

Σχετικές αναρτήσεις:

Αφήστε ένα σχόλιο