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

Python 将参数传递给自定义save()方法,python,django,django-models,Python,Django,Django Models,如何将参数传递给自定义save方法,保留适当的*args,**kwargs以传递给te super方法?我试着说: form.save(my_value) 及 但这似乎不起作用。我做错了什么 编辑:我找到了这个示例(请参阅最后一条消息,用于传递“reorder”): 这基本上就是我要做的,但是由于某种原因,my_value被认为是一个意外的参数。关键字参数必须跟在位置参数后面。请尝试以下方法: def save(self, my_value, *args, **kwargs): ..

如何将参数传递给自定义save方法,保留适当的
*args
**kwargs
以传递给te super方法?我试着说:

form.save(my_value)

但这似乎不起作用。我做错了什么

编辑:我找到了这个示例(请参阅最后一条消息,用于传递“reorder”):


这基本上就是我要做的,但是由于某种原因,
my_value
被认为是一个意外的参数。

关键字参数必须跟在位置参数后面。请尝试以下方法:

def save(self, my_value, *args, **kwargs):
    ....
或:


您可以尝试以下方法

将“另存为”方法重写为:

def save(self, my_val, *args, **kwargs):
    print my_val
    # do_something here
    return super(MyModel, self).save(*args, **kwargs)
MyModel.save(my_val="fooooo")
调用“另存为”方法时:

def save(self, my_val, *args, **kwargs):
    print my_val
    # do_something here
    return super(MyModel, self).save(*args, **kwargs)
MyModel.save(my_val="fooooo")

这将打印my_val并保存。

现有答案不完整

Model.save
的问题在于有多种方法可以实现它,尤其是通过
Model.objects.create()
。queryset
create()
调用不会向
Model.save传递额外的参数,您的代码可能不会按预期运行

您可以在此处轻松查看
create()
和其他方法(get\u或\u create、update\u或\u create)的源代码:

QuerySet的
bulk\u create
方法根本不调用
save
。这意味着任何自定义逻辑都将被完全忽略


由于这些风险,我会考虑这个问题的前提,避免一个反模式。不要重载内置的save方法,而是创建一个完全不同的(工厂)方法来包含您的特殊行为,例如
mymodel.special\u save()

您正在展开save调用中的参数!似乎没有做到这一点——python说这是一个语法错误