2012-10-06 34 views
9

我试图为here所描述的ModelAdmin save_model创建记录的用户实现自动更新。我无法解决如何解决kwarg错误“save()得到了一个意外的关键字参数'force_insert'”。django autoupdate user; 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) 

documentation指出

“的save_model方法给出的HttpRequest,模型实例,一个 的ModelForm实例,并根据它是否是增加 或改变对象的布尔值。 “

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

编辑:改回代码回匹配的例子。

回答

26

更新

如果你已经重写方法Activity或得到保存在同时部分机型save(),但忘了接受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() 
+0

感谢您指出了这一点。这是从我做的一些测试中遗留下来的。我将其更改为正确的代码,但仍会引发相同的错误。 – jabs

+1

@jabs你可以重载'Activity'的'save()'方法或其他一些保存的模型。 – okm

+0

就是这样。我在我的模型上有一个save()方法。谢谢! – jabs

相关问题