2013-05-28 67 views
1

在我看來:django表單save()得到了一個意外的關鍵字參數?

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作爲參數,這不會發生。我究竟做錯了什麼?

注:安靜是在條件檢查使用的obj.save函數中的參數,但既不是形式的屬性或

+0

您的視圖如何定義?你用什麼'安靜的? – karthikr

+0

我很努力地找出你的存儲方法在哪裏需要'安靜'工作:D –

回答

3

是的,你可以重寫處理kwarg obj的本身,而是你不應該與super一樣撥打:

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

應該這樣做。這是因爲ModelFormsave方法簽名是:

def save(self, commit=True): 

所以也沒有你所呼叫的方式相匹配。

希望這會有所幫助!

+0

這很有道理,只需看看https://github.com/django/django/blob/master/django/表格/ models.py。謝謝。 – Derek

+0

非常歡迎:) –

1

您需要有一個名爲quiet的字段才能將值保存到該字段。我沒有在表單中看到任何對此類字段的引用,所以我猜測模型中沒有一個字段。即使存在,您可能也必須在表單中引用它,因爲您正在定義正在使用的模型的哪些部分。

相關問題