我正在尝试使用save method更新模型的字段:
forms.py:
class FooForm(forms.ModelForm):
class Meta:
model = Foo
exclude = ['created']
views.py:
class FooView(FormView):
success_url = '/some/url/'
template_name = 'some/template.html'
form_class = FooForm
model = Foo
def form_valid(self, form):
if 'foo' in self.request.session:
pk = self.request.session['foo']
foo = Foo.objects.get(pk=pk)
self.object = form.save(instance=foo)
else:
self.object = form.save()
self.request.session['foo'] = self.object.pk
return HttpResponseRedirect(self.get_success_url())
我有一个错误,当我尝试使用form.save(instance = foo)时:
TypeError at /some/url
save() got an unexpected keyword argument 'instance'
我的问题是什么?
Django 1.9.0
Python 3.4.3
答案 0 :(得分:2)
如果你阅读了你链接的文档,你会发现instance
关键字是ModelForm构造函数的输入而不是save方法。
您需要执行类似
的操作form = FooForm(instance=foo)
form.save()
答案 1 :(得分:0)
您应该为表单的构造函数提供一个实例,而不是save
方法。
要使其有效,您应该使用UpdateView。
答案 2 :(得分:0)
on_model_delete(model) ---------> TypeError: on_model_delete() takes exactly 1 argument (2 given)
on_model_delete(model.photo) -----------> SyntaxError: invalid syntax
on_model_delete() -----------> TypeError: on_model_delete() takes no arguments (2 given)