2013-01-06 39 views

回答

3

我認爲你可以在重新實現「完成」嚮導方法時管理它,就在你將表單數據保存到數據庫的瞬間(取決於你的最終目標,但是如果你想要一個嚮導你正在尋找的數據保存在嚮導末尾)。想想那些:

  • 如果用戶已通過「步驟1」,那麼他在這一步中輸入的數據是正確的。
  • 如果用戶已通過「步驟2」,則他在此步驟中輸入的數據也是正確的,以此類推。閱讀django doc的詳細信息。

因此,您可以爲B做一個表格,而不用擔心「步驟2」中的「A」數據,因爲當您處於嚮導的「最後一步」時數據將會有效。我約的想法是,你可以做一個B所形成只與你正在考慮從B而沒有提及A.例如保存,如果我們有一個BModel下面跟隨數據:

Class B(models.Model): 
    a = models.ForeignKey('A') 
    name = models.CharField(max_lenght=50) 

您可以創建對於B與形式:

Class BForm(forms.Form): 
    name = forms.CharField(max_length=50) 

終於在「做」的方法,你有一個form_list與一切形式的有效,你可以這樣做:

def done(self, form_list, **kwargs): 
    b_data = {} 
    for form in form_list: 
     # Getting the A instance 
     if isinstance(form, AForm): 
      a_instance = form.save() 
     # Getting B data 
     elif isinstance(form, BForm): 
      b_data = form.cleaned_data 
     else: 
      form.save() 
    b_data.update({'a': a_instance}) 
    BModel.objects.create(**b_data) 
    return redirect("success_url")