1

在我看来:

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 本身

4

2 回答 2

3

是的,您的覆盖可以处理,kwarg但您不应该对super调用做同样的事情:

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

应该这样做。发生这种情况是因为ModelFormsave方法签名是:

def save(self, commit=True):

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

希望这可以帮助!

于 2013-05-28T20:42:46.287 回答
1

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

于 2013-05-28T20:43:19.310 回答