Gelöst: Datumsfeld für die automatische Aktualisierung von Django Admin

Das Hauptproblem besteht darin, dass das Datumsfeld für die automatische Aktualisierung von Django nicht richtig verarbeitet wird. Wenn Sie versuchen, das Datumsfeld über die Verwaltungsoberfläche zu aktualisieren, aktualisiert Django automatisch alle Felder in der Tabelle mit demselben Namen, einschließlich des Datumsfelds für die automatische Aktualisierung. Dies kann zu unerwarteten und möglicherweise falschen Änderungen Ihrer Daten führen.

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>

Was ist das Feld für die automatische Aktualisierung?

Das Feld „Auto update“ ist ein boolesches Feld in der Tabelle „settings“ eines Django-Projekts. Wenn es auf True gesetzt ist, sucht Django automatisch nach Updates für die Einstellungsdateien des Projekts und aktualisiert die Einstellungsdateien des Projekts, wenn neue Einstellungen gefunden werden.

Zusammenhängende Posts:

Hinterlasse einen Kommentar