django表单save()得到了一个意外的关键字参数?

时间:2013-05-28 20:40:09

标签: python django

在我看来:

image = simple_image_form.save(quiet=True)

我的表格:

class SimpleImageForm(forms.ModelForm):

    class Meta:
        model = Image
        fields = ("image",)

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop("request", None)
        super(SimpleImageForm, self).__init__(*args, **kwargs)

    def save(self, *args, **kwargs):
        kwargs["commit"]=False
        obj = super(SimpleImageForm, self).save(*args, **kwargs)
        if self.request and self.request.user:
            obj.member = self.request.user.get_current_member()
            obj.save(*args, **kwargs)
        return obj

当我保存时,我收到错误:

save() got an unexpected keyword argument 'quiet'

我认为将** kwargs作为参数,这不会发生。我做错了什么?

注意:quiet是条件检查中使用的obj.save函数中的参数,但既不是表单的属性,也不是obj本身的

2 个答案:

答案 0 :(得分:3)

是的,您的覆盖可以处理kwarg但您不应该对super电话执行相同的操作:

obj = super(SimpleImageForm, self).save(commit=False)

应该这样做。这是因为ModelForm的{​​{1}}方法签名是:

save

所以它与你调用它的方式不符。

希望这有帮助!

答案 1 :(得分:1)

您需要有一个名为quiet的字段才能将值保存到该字段。我没有在表格中看到任何对这样一个字段的引用,所以我猜测模型中没有一个字段。即使有,你可能不得不说在表格中引用它,因为你正在定义你正在使用的模型的哪些部分。