2012-10-06 64 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

相關問題