将参数传递给自定义save()方法

Nik*_*ita 9 python django django-models

如何将参数传递给我的自定义保存方法,保留正确*args,**kwargs以传递给te超级方法?我在尝试这样的事情:

form.save(my_value)
Run Code Online (Sandbox Code Playgroud)

def save(self, my_value=None, *args, **kwargs):

   super(MyModel, self).save(*args, **kwargs)

   print my_value
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.我究竟做错了什么?

编辑:我找到了这个示例(请参阅最后一条消息,传递'重新排序'):http: //groups.google.com/group/django-users/browse_thread/thread/b285698ea3cabfc9/6ce8a4517875cb40?lnk = laot

这基本上就是我想做的事情,但my_value出于某种原因被认为是一个意想不到的争论.

Dan*_*aab 20

关键字参数必须遵循位置参数.试试这个:

def save(self, my_value, *args, **kwargs):
    ....
Run Code Online (Sandbox Code Playgroud)

要么:

def save(self, *args, **kwargs):
    my_value = kwargs.pop('my_value', None)
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以尝试以下操作。

将保存方法重写为:

def save(self, my_val, *args, **kwargs):
    print my_val
    # do_something here
    return super(MyModel, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

调用 save 方法时:

MyModel.save(my_val="fooooo")
Run Code Online (Sandbox Code Playgroud)

这将打印my_val并保存它。