/ / django autoupdate користувач; save () отримав несподіваний аргумент keyword 'force_insert' - django, django-admin, автоматичне оновлення

django autoupdate користувач; save () отримав несподіваний аргумент keyword 'force_insert' - django, django-admin, автоматичне оновлення

Я намагаюся застосувати автоматичне оновлення для користувача, який створює запис, використовуючи ModelAdmin save_model як описано тут. Я не зміг розібратися, як обійти помилку kwarg "save () отримав несподіваний аргумент ключового слова" force_insert "".

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)

The документація зазначає що

"Методу save_model присвоюється HttpRequest, приклад моделі, a Екземпляр ModelForm і логічне значення залежно від його додавання або змінити об'єкт ".

Чи це щось автоматичне, чи мені потрібно його передати з точки зору? Якщо це не проблема, то що ще може бути?

EDIT: змінений код повернувся до прикладу.

Відповіді:

29 для відповіді № 1

оновлення

Якщо ви перевиконали save() метод Activity або деякі інші моделі, які тимчасово зберігаються, але забуті прийняти force_insert як аргумент ключового слова ця помилка може статися:

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

Перевірте трекбек, щоб знайти помилку save


Ваш код не повністю відповідає коду b-list.org, спробуйте:

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