Я намагаюся застосувати автоматичне оновлення для користувача, який створює запис, використовуючи 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()