django autoupdate用户; save()得到了一个意外的关键字参数'force_insert'

jab*_*abs 13 django auto-update 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)
Run Code Online (Sandbox Code Playgroud)

文件指出,

"save_model方法给出了HttpRequest,模型实例,ModelForm实例和基于它是添加还是更改对象的布尔值."

这是自动的还是我需要从视图中传递它?如果这不是问题,那还有什么呢?

编辑:更改代码以匹配示例.

okm*_*okm 42

更新

如果你有被覆盖的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):
    ...
Run Code Online (Sandbox Code Playgroud)

检查引用以找到失败的 save


您的代码并未完全遵循b-list.org中的代码,请尝试:

def save_model(self, request, obj, form, change): 
    if not change:
        obj.cruser = request.user
    obj.save() 
Run Code Online (Sandbox Code Playgroud)