@artinnok
бекенд-программист

Почему не могу обновить поля модели?

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())


Выводит ошибку при попытке обновить модель через save(instance=foo):
TypeError at /some/url
save() got an unexpected keyword argument 'instance'


В чем проблема?
Django 1.9.0
Python 3.4.3
  • Вопрос задан
  • 279 просмотров
Решения вопроса 2
sim3x
@sim3x
https://docs.djangoproject.com/en/1.9/topics/forms...

def form_valid(self, form):
        if 'foo' in self.request.session:
            pk = self.request.session['foo']
            foo = Foo.objects.get(pk=pk)
            TheForm = self.get_form_class()
            self.object = TheForm(instance=foo)
Ответ написан
@artinnok Автор вопроса
бекенд-программист
def form_valid(self, form):
        if 'foo' in self.request.session:
            pk = self.request.session['foo']
            foo = Foo.objects.get(pk=pk)
            foo_form = self.form_class(form.cleaned_data, instance=foo)
            foo_form.save()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы