如何使用save方法从表单更新模型的字段Django?

时间:2016-01-16 20:05:04

标签: python django

我正在尝试使用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

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)