django自动更新用户; save()得到了意外的关键字参数'force_insert' [英] django autoupdate user; save() got an unexpected keyword argument 'force_insert'
问题描述
我正在尝试为使用 此处中所述的ModelAdmin save_model .我无法解决kwarg错误"save()得到了意外的关键字参数'force_insert'".
I'm trying to implement an auto update for the user who creates a record using ModelAdmin save_model as described here. I wasn't able to work out how to get around the kwarg error "save() got an unexpected keyword argument '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)
文档指出
"save_model方法被赋予HttpRequest,一个模型实例,一个 ModelForm实例和一个基于其是否添加的布尔值 或更改对象."
"The save_model method is given the HttpRequest, a model instance, a ModelForm instance and a boolean value based on whether it is adding or changing the object."
这是自动的吗,还是需要从视图中传递过来?如果那不是问题,那还能是什么?
Is this something automatic or do I need to pass it in from the view? If that's not the issue, then what else could it be?
将代码改回匹配的示例.
changed code back to match example.
推荐答案
更新
如果您覆盖了Activity
的save()
方法或其他同时保存的模型,但又忘记接受force_insert
作为关键字参数,则可能会发生此错误:
If you have overridden save()
method of Activity
or some other Models that get saved in meanwhile, but forgotten to accept force_insert
as keyword argument, this error could happen:
def save(self):
...
# should be
def save(self, force_insert=False, force_update=False, using=None):
...
# or at least
def save(self, **kwargs):
...
检查引用以找到失败的save
Check the trackback to locate the failed save
您的代码未完全遵循b-list.org中的代码,请尝试:
Your code does not fully follow the code from b-list.org, try:
def save_model(self, request, obj, form, change):
if not change:
obj.cruser = request.user
obj.save()
这篇关于django自动更新用户; save()得到了意外的关键字参数'force_insert'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!