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 に答える