/ / django autoupdate Benutzer; save () hat ein unerwartetes Keyword-Argument 'force_insert' - django, django-admin, auto-update

django autoupdate Benutzer; save () hat ein unerwartetes Keyword-Argument 'force_insert' - django, django-admin, auto-update

Ich versuche, ein automatisches Update für den Benutzer zu implementieren, der einen Datensatz mit erstellt ModelAdmin save_model wie beschrieben Hier. Ich konnte nicht herausfinden, wie ich den Kwarg-Fehler umgehen kann. Save () hat ein unerwartetes Schlüsselwortargument "force_insert" erhalten.

admin.py
from myapp.myproj.models import Activity
from django.contrib import admin

class ActivityAdmin(admin.ModelAdmin):
exclude = ("cruser",)
list_display = ("activity_nm", "activity_desc", "startdt", "enddt","upddt","crdt")

def save_model(self, request, obj, form, change):
if not change:
obj.cruser = request.user
obj.save()

admin.site.register(Activity, ActivityAdmin)

Das Dokumentation besagt, dass

"Die save_model-Methode erhält die HttpRequest, eine Modellinstanz, eine ModelForm-Instanz und ein boolescher Wert basierend darauf, ob er hinzugefügt wird oder das Objekt ändern. "

Ist das etwas automatisch oder muss ich es aus der Sicht weitergeben? Wenn das nicht das Problem ist, was könnte es dann sein?

BEARBEITEN: Code zurück zum Beispiel geändert.

Antworten:

29 für die Antwort № 1

aktualisieren

Wenn Sie übergangen haben save() Methode von Activity oder einige andere Modelle, die in der Zwischenzeit gespeichert werden, aber vergessen zu akzeptieren force_insert Als Schlüsselwortargument kann dieser Fehler auftreten:

def save(self):
...
# should be
def save(self, force_insert=False, force_update=False, using=None):
...
# or at least
def save(self, **kwargs):
...

Überprüfen Sie den Trackback, um den Fehler zu finden save


Dein Code folgt nicht vollständig dem Code von b-list.org, versuche es:

def save_model(self, request, obj, form, change):
if not change:
obj.cruser = request.user
obj.save()