2015-10-20 27 views
0

在同一views.py,如果我有2「DEF」,如何可以通過數據輸入結果在第一DEF到用於濾波的第二DEF數據庫?django- 2個DEF在同一views.py如何傳遞數據

拿一個例子:

def input(request): 
    if request.method == 'POST': 
     form = InputForm(request.POST) 
     if form.is_valid(): 
      name = form.cleaned_data['name'] 
      age = form.cleaned_data['age'] 

      return redirect('result') 
     else: 
      print form.errors 
    else: 
     form=InputForm()    
    return render_to_response('inputform.html',{'form': form},context_instance=RequestContext(request)) 


class ResultView(): 
    context_object_name = 'result_list' 
    template_name = 'result_list.html' 

    # Here how can I get the form entry (name/age)from above def to filter the result?      
    queryset=Result.filter(name=name,age=age) 
    scor=Result.objects.filter(queryset) 
    subject.Result.objects.filter(queryset) 

    def get_context_data(self, **kwargs): 
     context = super(ResultView, self).get_context_data(**kwargs) 

     return context 

網址

url(r'^result_list/$',ResultView.as_view(),name='result'), 
url(r'^input', 'result.views.input',name='input'), 

在上面的代碼中,查詢集= Result.filter(NAME =名稱,...),在這裏不能得到來自「def input」的表單數據。非常感謝您的幫助,謝謝。

回答

1
class ResultView(ListView): 
    context_object_name = 'result_list' 
    template_name = 'result_list.html' 

    def get_context_data(self, **kwargs): 
     context = super(ResultView, self).get_context_data(**kwargs) 
     return context 

    def get_queryset(self): 
     if self.request.method == 'POST': 
      form = InputForm(self.request.POST) 
      if form.is_valid(): 
       name = form.cleaned_data['name'] 
       age = form.cleaned_data['age'] 
       return Result.filter(name=name, age=age) 
     return super(ResultView, self).get_queryset() 
+0

感謝@EchoUA隊。如果我想在提交表單後保留重定向功能。我如何將重定向('result')與您放置的返回超級(ResultView,self).get_queryset()結合起來? –

+0

如果你想重定向與驗證表格後的參數「年齡」和「名」來,您就可以使用此方案https://gist.github.com/anonymous/52918ccb37bc18d03e63 – EchoUA

+0

只需更換'{{DupontView.total_asset}}'在'{{result.total_asset}}'和''上{{DupontView.sales}}'{{result.sales}}' – EchoUA

相關問題