2012-08-13 5 views
2

잘 작동하는 장고 폼 마법사를 만들었습니다. 그러나 마법사를 끝내고 다시 시작하면 이전 사용 중에 생성 된 데이터가로드됩니다. 대신 이전 마법사 상태를 지우고 성공적으로 완료되면 다시 시작하겠습니다. 나는 마법사의 완료 방법을 수정 시도하지만, 트릭하지 않습니다Django 폼 마법사, 마법사를 재설정/지우는 방법?

def done(self, form_list, **kwargs): 
    self.instance_dict = {} 
    self.storage.reset() 
    return HttpResponseRedirect('/foo/') 

을 내가 마법사가 내가 그것을 필요로하는 방식으로 작동하도록 변경해야합니까? 내 마법사는 NamedUrlSessionWizardView 클래스를 확장합니다.

+0

시도를 재설정 마법사 : 나는 일반적으로 데이터 처리가 완료된 후 그렇게 * self.storage.current_step = self.steps.first *. 이 코드 라인에 새로운 것이 있습니까? – sergzach

+0

여전히 동일 ... –

+0

마법사가 작동하는 페이지에 GET 요청을 보내려면? reset = true 매개 변수를 사용하십시오. 마법사가 재설정됩니까? – sergzach

답변

2

나는 나는 100 % 확실하지 이것은 사실이지만, 나는 일 다음 생각하는 경우 :

나는이처럼 내 마법사 형태의 인스턴스를 저장했다 :

self.instance_dict['foo'] = foo 

하지만 어떤 이유로

에 대한

self.instance_dict = {} 

해당 데이터를 지우지 않았습니다. 나는 다음과 같은 예를 들어, 마법사의 def get_form_instance(self, step) 방법 내부 검색

self.storage.extra_data = {'foo' : foo} 

가 :

def get_form_instance(self, step): 
    ... 
    if self.steps.current == 'foo' and self.storage.extra_data.has_key('foo'): 
     return Bar.objects.filter(foo=self.storage.extra_data['foo']) 
    ... 

데이터는 분명히 성공적으로 지워있어 대신 내가 추가 데이터의 개체를 저장하기 위해 이동 위에서 언급 한 방법. 그러나 결국에는 더 많은 복잡성으로 인해 전체 양식 마법사를 삭제하고 한 단계 형식으로 진행했습니다.

0

정말 쉽게 폼 마법사의 저장소를 재설정 할 수 있습니다.

def done(self, form_list, form_dict, **kwargs): 
    #do stuff with your form data 
    self.instance_dict = None 
    self.storage.reset() 
    return redirect(reverse_lazy('somewhere')) 

또는 추가하는 또 다른보기에서 리디렉션 후

del request.session['wizard_name'] 
관련 문제