2016-06-28 7 views
0

私はDjangoの初心者です。私はDjangoでアプリを開発しています。私は、データベースにフォームの結果を格納し、ビューで関数を呼び出して、その関数の結果を再度データベースに格納する必要があります。 views.pyでDjango:フォームデータにアクセスし、結果をデータベースに保存するビューでモデル関数を呼び出すにはどうすればよいですか?

class f1New(models.Model): 
    v1 = models.CharField(max_length=5) 
    u1 = models.CharField(max_length=5) 
    a1 = models.CharField(max_length=5) 
    t1 = models.CharField(max_length=5) 
    def calculate(v1,u1,a1,t1): 
     v1 = u1 + a1 

def f1(request): 
    context = RequestContext(request) 
    if request.method == 'POST': 
     form = f1Form(request.POST) 
     if form.is_valid(): 
      form.save(commit=True) 
      f1.calculate(form[v1],form[u1],form[a1],form[t1]) 
      return question_list(request) 
     else: 
      print form.errors 
    else: 
     print ("Not Post") 
    return render_to_response('question_list.html', {'form': form}, context) 

私はこれが正しいかどうかわからない、と方法がわからない:models.pyで が、これは計算機能と私のモデルクラスでありますそれを確認する。 ご協力いただければ幸いです。 :)

+1

あなたのビュー関数の名前とモデル名は同じです。したがって、このスニペットでエラーが発生します –

+0

'u1'と' a1'を追加して 'v1'を計算する必要がある場合、なぜあなたは最初の場所? –

+0

ユーザーがボックスに入力した値に基づいて高度な計算を実行する必要があります。私はそれが動作するかどうかを確認するために基本的な追加操作を行っていました。 –

答えて

0

私はあなたがここで何を求めているのか全く分かりません。 Rajeshがコメントしているように、v1が他の要素から常に計算されている場合は、どうしてフォームでそれを受け入れますか?

それはあなたがこの後であること可能です:

class F1Model(models.Model): 
    ... 
    def calculate(self): 
     self.v1 = self.u1 + self.a1 

class F1Form(forms.ModelForm): 
    class Meta: 
     exclude = ('v1',) 

def f1(request): 
    if request.method == 'POST': 
     form = F1Form(request.POST) 
     if form.is_valid(): 
      f1instance = form.save(commit=False) 
      f1instance.calculate() 
      f1instance.save() 
      return redirect('question_list') 
    else: 
     form = F1Form() 
    return render(request, 'question_list.html', {'form': form}) 

が、それは確かに言うことは不可能です。

+0

私はこれを使ってクイズを作成しています。数式はv = u + a.tです。したがって、ユーザーが入力する値に基づいて、未知の変数を計算します。だから私はそれらすべてのための変数が必要です。私は結果を表示したい、または私がやっていることが働いているかどうかを見たいのですが、どうしたらいいですか? –

+0

あなたが何を求めているのか分かりません。値をテンプレートに渡して表示します。 –

+0

質問とdivを含むウェブページがあります。私は質問から値をドラッグしてdivに入れます。 JSの使用私は、divと同じ値を格納する非表示の入力フィールドを作成します。次に、ページの送信ボタンを使用してフォームデータをPOSTします。 フォームに保存されているドラッグされた値を使用して、計算を実行し、送信ボタンの横に計算結果を表示する必要があります。 私の質問はやや明確になっていますか? –

関連する問題